首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CSV中导出选定的行并重新导入相同的CSV文件,以更新PHP/MySQL中的选定行

在CSV中导出选定的行并重新导入相同的CSV文件,以更新PHP/MySQL中的选定行
EN

Stack Overflow用户
提问于 2012-11-09 04:56:16
回答 1查看 1.5K关注 0票数 0

我有一个包含以下列的mysql表:

代码语言:javascript
复制
filterid    productid   value   groupid

我想将此表中的行导出到CSV文件中(仅选择行)。我知道怎么做出口部分。

例如,如果我基于产品ID导出了行,假设导出的行为:

代码语言:javascript
复制
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导入到表中

代码语言:javascript
复制
LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table FIELDS
TERMINATED BY ',' 
ENCLOSED BY '' 
LINES TERMINATED BY '\n'

请建议一种方法来实现这一点。

如果您需要,我可以为您提供更多示例代码。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-09 05:41:02

我认为他之所以问这个问题,是因为他不知道如何使用带有WHERE子句的INFILE

现在,我已经将此内容导出到CSV文件中,并希望将其导入回mysql表中,在该表中,应该只更新与我导出的CSV文件中的产品id的匹配的行,而不会干扰其余的表内容。

如果您想使用脚本来执行您提到的操作,可以尝试执行以下操作:

代码语言:javascript
复制
// 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");

它至少应该给你指明正确的方向..

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13297658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档