sql >> データベース >  >> RDS >> Mysql

php mysql LOADDATAINFILEを使用してレコードごとに変数値を1ずつインクリメントする方法

    多分このように:

     /*1 get last serial number.
    
     open csv file.
     foreach row in csv file:
        increment serial number.
        if max number
           set serial number to 0.
        add new field to csv row
    
     close csv file
    
     insert csv to database*/
    
    
        $query_max = mysql_fetch_array(mysql_query("SELECT id, latest_serial_no FROM ".DB_NAME2.".latest_serial_number WHERE id=1"), MYSQL_ASSOC);
        $serial_no_max = $query_max["latest_serial_no"];
        $serial_no_max_new = $serial_no_max;
        if ($serial_no_max > 999999998) {$serial_no_max_new = 000000000;}
    
        $padd = "";
        $serial_len = strlen($serial_no_max_new);
        if($serial_len < 9) {
            $serial_len = (9 - $serial_len);
            for($is=0;$is<$serial_len;$is++) {
                $padd .= "0";
            }
            $serial_no_max_new = $padd . $serial_no_max_new;
        }
        $query_serial = trim($serial_no_max_new);
        //echo "q_s: ".$query_serial;
    
        // Add serail number to csv code
        $csv = fopen($target_file, "r");
        $tmp_csv_addr = $target_file . "2";
        $tmp_csv = fopen($tmp_csv_addr, "a");
        while (($data = fgetcsv($csv, 0, ",")) !== FALSE) {
            $data[] = $query_serial;
            fputcsv($tmp_csv, $data, ",");
        }
        fclose($csv);
        fclose($tmp_csv);
    
        // Insert into database
        $loadsqlfiletodb = "LOAD DATA LOCAL INFILE '".$tmp_csv_addr."'
        INTO TABLE ".DB_NAME2.".list_data
        FIELDS TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '\"' 
        LINES TERMINATED BY '\n'
        IGNORE 1 LINES 
        (first,last,address,city,state,zip,company,tracking_number,vin,year,make,model,rough,average,clean,misc1,misc2,misc3,misc4,misc5,misc6,misc7,misc8,misc9,misc10,list,email,phone,image_name,image_path,serial_no)
        SET cid = ".$campaignid.",
            jid = ".$jobid;
    
        mysql_query($loadsqlfiletodb) or die(mysql_error());
    
        unlink($tmp_csv);
    


    1. MySQLからPostgreSQLへの移行

    2. 修正:Oracleデータベースの「間隔の主要な精度が小さすぎる」

    3. MySQL 5.1でキーの長さを増やすにはどうすればよいですか?

    4. 左結合の列名のエイリアス