我有很多 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 上工作)