Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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文件?_Php_Mysql_Node.js_Csv - Fatal编程技术网

如何从我的PHP服务器生成和导出一个大的CSV文件?

如何从我的PHP服务器生成和导出一个大的CSV文件?,php,mysql,node.js,csv,Php,Mysql,Node.js,Csv,我的服务器可以是PHP或nodeJS,我更喜欢呆在PHP中,但如果在node中做不到/做得更好,我将非常感谢您的回答 我想生成并导出一个非常大的CSV文件,问题是我无法一次从MySQL加载所有数据,所以目前我将数据量限制在一定程度上,这不会使应用程序崩溃,但速度很慢,大多数数据都不会导出 我想到了生成和导出CSV文件的解决方案: 向我的服务器发送1..N个调用,每个调用将生成Part1…PartN CSV,浏览器将附加它们[浏览器不会崩溃吗?] 在一个请求中,将数据流传输到浏览器,但浏览器如何开

我的服务器可以是PHP或nodeJS,我更喜欢呆在PHP中,但如果在node中做不到/做得更好,我将非常感谢您的回答

我想生成并导出一个非常大的CSV文件,问题是我无法一次从MySQL加载所有数据,所以目前我将数据量限制在一定程度上,这不会使应用程序崩溃,但速度很慢,大多数数据都不会导出

我想到了生成和导出CSV文件的解决方案:

  • 向我的服务器发送1..N个调用,每个调用将生成Part1…PartN CSV,浏览器将附加它们[浏览器不会崩溃吗?]
  • 在一个请求中,将数据流传输到浏览器,但浏览器如何开始下载文件
  • 我不介意客户端等待太久,只是希望有一个好方法从我在MySQL中获得的数据导出~200MB csv


    谢谢。

    这是一个使用Mysql表示法的不错的解决方案:

    SELECT *
    INTO OUTFILE '/tmp/dbexport.csv' 
    FIELDS ENCLOSED BY '"' 
    TERMINATED BY ';' 
    ESCAPED BY '"' 
    LINES TERMINATED BY '\r\n'
    FROM tables;
    
    也看看答案

    你也可以考虑使用.tSB(tab分隔文件),这对你没有什么不同:

    mysql your_database -e "select * from tables" -B > export.tsv 
    

    这是一个很好的使用Mysql表示法的解决方案:

    SELECT *
    INTO OUTFILE '/tmp/dbexport.csv' 
    FIELDS ENCLOSED BY '"' 
    TERMINATED BY ';' 
    ESCAPED BY '"' 
    LINES TERMINATED BY '\r\n'
    FROM tables;
    
    也看看答案

    你也可以考虑使用.tSB(tab分隔文件),这对你没有什么不同:

    mysql your_database -e "select * from tables" -B > export.tsv 
    

    这是一个很好的答案,但我需要在将数据发送回浏览器之前处理服务器中的数据,还有其他想法吗?我不明白你的意思,这样服务器中的所有事情都会发生。结果在您的服务器中,
    /tmp/
    文件夹中,
    dbexport.csv
    文件中,因此您可以在服务器中解析它。解析如此大的文件会导致内存耗尽,因为填充它的数组太大,应用程序无法容纳。为了解决这个问题,我一次只能读取部分文件,但我不需要该文件,我可以运行部分查询并处理它,保存到多个文件/附加到单个文件,然后以某种方式将其上传回客户端浏览器。如果您知道如何将200mb的文件发送到浏览器,我将不胜感激,以便解析数据小文件将有助于您的内存。然后,为了将200Mb的数据刷新到浏览器中,我认为分页最适合您。以某种方式对数据进行排序,分片发送(每次20到100个元素),然后组织请求,如
    /mydbcontent/?ini=0&size=100
    ,并将其刷新到json数据数组中。这是一个很好的答案,但我需要在服务器中处理数据,然后再将其发送回浏览器,还有其他想法吗?我不明白你的意思,这样,一切都在服务器中发生。结果在您的服务器中,
    /tmp/
    文件夹中,
    dbexport.csv
    文件中,因此您可以在服务器中解析它。解析如此大的文件会导致内存耗尽,因为填充它的数组太大,应用程序无法容纳。为了解决这个问题,我一次只能读取部分文件,但我不需要该文件,我可以运行部分查询并处理它,保存到多个文件/附加到单个文件,然后以某种方式将其上传回客户端浏览器。如果您知道如何将200mb的文件发送到浏览器,我将不胜感激,以便解析数据小文件将有助于您的内存。然后,为了将200Mb的数据刷新到浏览器中,我认为分页最适合您。以某种方式对数据进行排序,分片发送(每次20到100个元素),然后组织请求,如
    /mydbcontent/?ini=0&size=100
    ,并将其刷新到json数据数组中。