我有一些巨大的sql表(>50M)存储在mysql数据库中。我只需要将它们下载到.csv文件中。
我知道我可以通过以下方式限制返回值的大小:
SELECT * FROM myTable
LIMIT 1000000; 但是,对于大于1M的行,我总是会耗尽内存。
此外,由于某些原因,如果使用除MySQL工作台5.2.47之外的任何其他客户端,我会收到来自服务器的失败的握手应答/连接被拒绝。所以我必须坚持使用这个工具和版本。此外,我不能改变机器,所以内存限制是一个约束。
如何实现和循环下载并存储csv文件中的大表,并保证结果的有序性和唯一性?
发布于 2019-11-06 09:28:55
您可以使用SELECT INTO FILE生成csv。生成1M行的文件应该不会有任何问题。
有关属性语法和字段分隔字符等信息,请参阅文档。
https://dev.mysql.com/doc/refman/8.0/en/select-into.html
一份个人样本SELECT * INTO OUTFILE '/<OUTPUT_DIR>/export.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' FROM TABLE_NAME <WHERE condition> <ordering> LIMIT <BATCH_SIZE>;"
https://stackoverflow.com/questions/58716797
复制相似问题