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

时间:2017-07-06 19:00:04

标签: php mysql node.js csv

我的服务器可以是PHP或nodeJS,更喜欢保留在PHP中,但如果在节点中无法完成/更好,我会很感激答案。

我想生成并导出一个非常大的CSV文件,问题是我无法从MySQL加载一次所有数据,因此目前我将数据限制为一些不会使应用程序崩溃的数据,但它是慢,大多数数据都不会被导出。

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

  1. 向我的服务器发送1..N呼叫,每次呼叫都会生成Part1 ... PartN CSV,浏览器会追加它们[浏览器不会崩溃吗?]
  2. 在一个请求中,将数据流式传输到浏览器,但是浏览器如何开始下载文件?
  3. 我不介意客户端会等很多,只是想从MySQL得到的数据中导出~200MB csv的好方法。

    感谢。

1 个答案:

答案 0 :(得分:2)

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

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

也可以查看this回答。

您可以考虑使用.tsb(制表符分隔文件),它对您没有任何影响:

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