0

次の列を持つmysqlテーブルがあります。

filterid    productid   value   groupid

このテーブルの行(選択した行のみ)をCSVファイルにエクスポートしたいと思います。エクスポート部分のやり方を知っています。

たとえば、製品IDに基づいて行をエクスポートした場合、エクスポートされた行は次のようになります。

4   13307   USA|Quebec|Rest of Canada   750
9   15963   USA|Quebec|Rest of Canada   1
9   13618   USA|Quebec|Rest of Canada   1
9   16210   USA|Quebec|Rest of Canada   1
9   16666   USA|Quebec|Rest of Canada   1

合計100行のうち。

これで、このコンテンツをCSVファイルにエクスポートし、mysqlテーブルにインポートして戻したいと思います。ここで、エクスポートされたCSVファイルにある製品IDと一致する行のみを更新し、残りのテーブルコンテンツを邪魔することはありません。

それは可能ですか?

グーグルした後、私が見つけたのは、このコードを使用してCSVをテーブルにインポートできることです

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table FIELDS
TERMINATED BY ',' 
ENCLOSED BY '' 
LINES TERMINATED BY '\n'

これを達成する方法を提案してください。

必要に応じて、より多くのサンプルコードを提供できます。

ありがとう!

4

1 に答える 1

2

彼は節の使い方INFILEを知らなかったので、彼は質問をしていたと思います。WHERE

これで、このコンテンツをCSVファイルにエクスポートし、mysqlテーブルにインポートして戻したいと思います。ここで、エクスポートされたCSVファイルにある製品IDと一致する行のみを更新し、残りのテーブルコンテンツを邪魔することはありません。

スクリプトを使用して前述のことを実行する場合は、次のことを試すことができます。

// set up your database connection
$fp = fopen('your_csv_file.csv','r') or die("**! can't open file\n\n");

// loop through your lines
while($csv_line = fgetcsv($fp,1024)) {

    $filterid = $csv_line[0];
    $productid = $csv_line[1];
    $value = $csv_line[2];
    $groupid = $csv_line[3];

    $update =  "UPDATE your_table(filterid, productid, value, groupid) ";
    $update .= "VALUES('$filterid', '$productid'; '$value'; '$goupid') WHERE productid='$productid'";

    // run $update on your database
}

fclose($fp) or die("**! can't close file\n\n");

それは少なくともあなたを正しい方向に向けるべきです。

于 2012-11-08T21:41:01.800 に答える