我有一个包含以下列的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'
请建议一种方法来实现这一目标。
如果需要,我可以为您提供更多示例代码。
谢谢!
答案 0 :(得分:2)
我认为他是在问这个问题,因为他不知道如何将INFILE
与WHERE
条款一起使用:
现在,我已将此内容导出为CSV文件并想要导入 它回到我的mysql表中,应该只更新匹配的行 使用产品ID ,这是我导出的CSV文件中没有的 令人不安的其他表内容。
如果您想使用脚本执行上述操作,可以尝试以下操作:
// 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");
它至少应该指向正确的方向..