我有一个包含以下列的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'请建议一种方法来实现这一点。
如果您需要,我可以为您提供更多示例代码。
谢谢!
发布于 2012-11-09 05:41:02
我认为他之所以问这个问题,是因为他不知道如何使用带有WHERE子句的INFILE:
现在,我已经将此内容导出到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");它至少应该给你指明正确的方向..
https://stackoverflow.com/questions/13297658
复制相似问题