MySQL加载数据infile函数和csv文件的格式

时间:2013-05-30 20:09:30

标签: php mysql csv

所以我需要一些帮助,我坚持了好几个小时。所以我在PHP中有这个数据数组,我使用fputcsv函数写入CSV文件。现在数据被保存到CSV文件中,格式如下:

Becoming Human, "becoming_human_uk", "2011", 
Bed of Roses, "bed_of_roses", "2008", 
Bed of Roses, "Bed_of_Roses_2008", "2008", 
Bedlam, "bedlam", "2011", 

这会持续大约10k行。到目前为止,这一切都是笨拙的。但是现在我想将所有这些数据从CSV导入到我的数据库表中。为此,我使用以下格式的LOAD DATA INFILE mysql函数:

$sql="LOAD DATA INFILE 'path/series.csv' INTO TABLE series FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\r\\n' (title, link, year)";

现在问题在于此。只有一行插入数据库及其第一行。我怀疑问题在于这些可选参数,如TERMINATED BY或ENCLOSED BY。我将字段放到可选地由包围,因为第一个字段不包含在“”中,而其他两个字段都包含在内。字段也以(,)结束,所以我猜这没关系。这只留下行终止,我不知道这是否正确。这可能还有其他问题。或者我可以更好地将数据输入格式化为CSV,以便所有字段都以相同的方式包含在内。所以,如果有人能帮我发现问题,我将非常感激。感谢。

1 个答案:

答案 0 :(得分:6)

我在MySQL 5.5.31中进行了测试,这很有效:

mysql> LOAD DATA LOCAL INFILE 'series.csv' INTO TABLE series 
  FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '\"' 
  LINES TERMINATED BY '\n' 
  (title, link, year);
Query OK, 4 rows affected (0.00 sec)

我必须编辑csv文件:

  • 请勿在逗号后加空格。

  • 请勿在行尾添加逗号。

  • 如果您的文件仅包含\r\n个换行符,请勿使用\n

  • 请勿在行尾添加空格。

  • 我在MySQL客户端测试,而不是在PHP中测试,所以我删除了双反斜杠。