Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我在使用.csv将数据导入PostgreSQL时遇到问题(csv中超过50K行)_Php_Postgresql - Fatal编程技术网

Php 我在使用.csv将数据导入PostgreSQL时遇到问题(csv中超过50K行)

Php 我在使用.csv将数据导入PostgreSQL时遇到问题(csv中超过50K行),php,postgresql,Php,Postgresql,我得到的错误是: 此页面不工作。未发送任何数据。 错误\u空\u响应 我正在使用PHP语言读取csv文件 我的PHP方法类似于处理csv数据: $csvAsArray = array_map('str_getcsv', file($tmpName)); 我确信上面的代码在代码没有得到执行后产生了问题。 如何一次导入超过100万个数据? 有人能帮我吗?我应该选择哪种方法?看起来你想一口吞下文件的全部内容。不要这样做:)PHP无法扩展到1000。。。或者几百万行 建议: 将数据读入临时文件(就像您

我得到的错误是:

此页面不工作。未发送任何数据。 错误\u空\u响应

我正在使用PHP语言读取csv文件

我的PHP方法类似于处理csv数据:

$csvAsArray = array_map('str_getcsv', file($tmpName));
我确信上面的代码在代码没有得到执行后产生了问题。 如何一次导入超过100万个数据?
有人能帮我吗?我应该选择哪种方法?

看起来你想一口吞下文件的全部内容。不要这样做:)PHP无法扩展到1000。。。或者几百万行

建议:

  • 将数据读入临时文件(就像您现在所做的那样)

  • 做一个Postgresql

  • 例如:

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

    我建议使用一个用于CSV解析和导入的包@paulsm4是正确的,它从不需要将整个文件放入内存,然后使用它,人们应该逐行读取。但是这个包维护得很好,而且在引擎盖下可以很有效地完成这一切。在我看来,它比复制postgres命令灵活得多。可以过滤内容,将回调映射到字段/行,以及PHP端的所有这些

    不确定是否是的副本,但可能会有所帮助。谢谢@paulsm4给出答案。但问题是,我必须将所有csv数据转换为eg的DB数据。(user_name到user_id)如果数据库中存在use_name(外键类型)。这就是我必须逐行迭代csv文件的原因。所以,有没有其他方法可以复制到临时表中呢。