加载数据文件可选择不按预期工作

问题描述 投票:0回答:1
许多相关的票务和网站,但不幸的是,到目前为止,没有任何解决方案对我有用,在这个问题上停留了几个小时。

我有很多 csv 文件需要插入到 mysql 数据库中,使用“加载文件”可以非常快速、轻松地完成此操作。

然而,它偶然发现了一个部分: 示例 csv 行:

绝对,格伦,阿纳基,“酷 Synd,超级酷”

我使用的代码是:

$q = "load data infile '$file' into table $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';"; mysql_query($q, $db);

我预计会有 4 个字段,但最终得到 5 个字段,它将引号内的逗号视为分隔符。我认为 OPTIONALLY ENCLOSED BY 的目的是捕获这些案例?

我尝试切换命令中终止和选择的字段的顺序。尝试将其封闭。尝试不转义“,也/”/“,尝试使用2个单引号而不是双引号;但我仍然无法让它理解我想要“Cool Synd,Super Cool”作为一个字段。

有人知道我在这里做错了什么吗?

这是我的表格结构:

我只是将所有数据放入此处,然后对其进行处理并将字段移动到相关表中并转换为正确的格式。有问题的列是“所有者”。 我在这里将其更改为文本类型,因为这是其他人的解决方案,但无论是文本、字符、varchar 等,它的工作方式都是相同的。

(在 Ubuntu 服务器 14.4、Apache/2.4.7、PHP 5.5.9 上工作)

php mysql csv
1个回答
0
投票
我遇到了这个问题并在这里解决了:

https://arstechnica.com/civis/viewtopic.php?t=366658

只要颠倒顺序即可。

$q = "load data infile '$file' into table $table FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ',' LINES TERMINATED BY '\n';"; mysql_query($q, $db);

双引号前也不需要反斜杠

© www.soinside.com 2019 - 2024. All rights reserved.