我在使用.csv导入数据中的数据时会遇到问题(CSV中的50K线大于50k线路)



错误我得到了:

此页面不起作用,没有发送任何数据。 err_empty_response

我正在使用PHP语言来读取CSV文件。

我的PHP方法看起来像是游行CSV数据:

$csvAsArray = array_map('str_getcsv', file($tmpName));

我敢肯定,上述代码创建问题后词该代码没有执行。我如何一次至少超过100万个数据?谁能帮助我,我应该选择哪种方法?

看来您正在尝试在一个湾中获取文件的整个内容。不要那样做:) php array_map()不能扩展到1000的...或数百万行。

建议:

  1. 将您的数据读取到临时文件中(您现在似乎正在做)。

  2. 做一个PostgreSQL复制

示例:

COPY my_table(my_columns, ...) 
FROM 'my_file.csv' DELIMITER ',' CSV HEADER;

我建议使用联盟/CSV软件包进行CSV解析和导入。@paulsm4是正确的,它永远不需要将整个文件放入内存中,然后使用它,应该逐渐读取行。但是,此软件包维护良好,并且在引擎盖下完成了这一切,并且非常有效。在我看来,它比COPY Postgres命令更灵活。一个人可以过滤内容,将回调映射到字段/行,所有这些都在PHP侧。

最新更新