所以我需要一些帮助,我坚持了好几个小时。所以我在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,以便所有字段都以相同的方式包含在内。所以,如果有人能帮我发现问题,我将非常感激。感谢。
答案 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中测试,所以我删除了双反斜杠。