加载数据Infile由于未按预期工作而被选中

时间:2016-02-18 10:13:03

标签: php mysql csv

许多相关的门票和tut网站,但遗憾的是到目前为止还没有任何解决方案对我有用,几个小时都坚持这个。

我需要将许多csv文件插入到mysql数据库中,使用' load in file'这很快,很容易。

然而,它在一个部分偶然发现: 样本csv行:

  

ABSOLUTE,Glenn,Anakie," Cool Synd,Super Cool"

代码I使用的是:

$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"作为一个领域。

任何人都知道我在这里做错了吗?

这是我的表结构:

enter image description here

我只是将所有数据都放在这里,然后我处理它并将字段移动到相关表格中的格式正确。有问题的专栏是'所有者'。 我已将其更改为文本类型,因为这是其他人的解决方案,但无论是text,char,varchar等,它都以相同的方式工作。

(使用Ubuntu服务器14.4,Apache / 2.4.7,PHP 5.5.9)

1 个答案:

答案 0 :(得分: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);

在双引号之前不需要反斜杠