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 回答