所以我需要一些帮助,我在这个问题上卡住了几个小时。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)";
问题就在这里。只有一行被插入到数据库中,这是第一行。我怀疑问题在于这些可选参数,如terminate BY或ENCLOSED BY。我把的字段可选地用括起来,因为第一个字段没有用"括起来,而另外两个字段用"括起来。此外,字段以(,)终止,所以我想这是可以的。这只剩下行终止符,我不知道这是否正确。可能还有别的地方出了问题。或者我是否可以以某种方式更好地格式化数据输入到CSV中,以便以相同的方式封装所有字段。因此,如果有人能帮助我发现这里的问题,我将不胜感激。谢谢。
我在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文件:
行尾不要加逗号
如果你的文件只包含
'n
换行符,不要使用'r'n
行尾不要加空格
我在MySQL客户端测试,而不是在PHP中,所以我删除了双反斜杠。