许多相关的门票和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"作为一个领域。
任何人都知道我在这里做错了吗?
这是我的表结构:
我只是将所有数据都放在这里,然后我处理它并将字段移动到相关表格中的格式正确。有问题的专栏是'所有者'。 我已将其更改为文本类型,因为这是其他人的解决方案,但无论是text,char,varchar等,它都以相同的方式工作。
(使用Ubuntu服务器14.4,Apache / 2.4.7,PHP 5.5.9)
答案 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);
在双引号之前不需要反斜杠