【发布时间】:2013-05-26 13:15:32
【问题描述】:
所以我需要一些帮助,我被困了好几个小时。所以我在 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,以便所有字段都以相同的方式包含在内。因此,如果有人可以帮助我在这里发现问题,我将不胜感激。谢谢。
【问题讨论】:
-
为什么不直接从数组到数据库。
-
我发现只插入一行的最常见原因是行终止符定义与实际行终止符不匹配
-
我无法从数组转到数据库,因为我有大约一百万行,并且将数据从 csv 加载到数据库更快。至少这就是我现在想要找出的。
-
我也认为它是行终止符,但我几乎尝试了所有方法,它仍然不起作用。
-
我看不到创建文件然后导入数据库比直接进入数据库更快。