4

所以我需要一些帮助,我被困了几个小时。所以我在 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,以便所有字段都以相同的方式包含在内。因此,如果有人可以帮助我在这里发现问题,我将不胜感激。谢谢。

4

1 回答 1

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 中进行测试,所以我删除了双反斜杠。

于 2013-05-30T20:28:09.120 回答