我收到错误:
此页面无法正常工作,没有发送任何数据。 ERR_EMPTY_RESPONSE
我正在使用PHP语言读取csv文件。
我的PHP方法看起来像用于处理csv数据:
$csvAsArray = array_map('str_getcsv', file($tmpName));
我确信上面的代码创建问题后,代码没有得到执行。 我如何一次可以导入大于至少一百万个数据? 谁能帮我,我应该选择哪种方法?
答案 0 :(得分:0)
您似乎正试图一次吞并文件的全部内容。不要那样做:) PHP array_map()不能扩展到1000行或数百万行。
建议:
将数据读取到临时文件中(就像您现在正在做的那样)。
执行Postgresql COPY
示例:
COPY my_table(my_columns, ...)
FROM 'my_file.csv' DELIMITER ',' CSV HEADER;
答案 1 :(得分:0)
我建议使用league/csv软件包进行CSV解析和导入。 @ paulsm4是正确的,它永远不需要将整个文件放入内存中然后使用它,而是应该逐行读取。但是,此程序包维护良好,可以在后台有效地完成所有操作。在我看来,它比COPY
postgres命令要灵活得多。一个人可以过滤内容,将回调映射到字段/行,所有这些都在PHP方面。