1

我有一个包含大量记录的 MySQL 表,有没有一种简单的方法可以将它导出为 .CSV 块,每块有一百万条记录?

4

2 回答 2

6

我会这样做(假设某些锁不会关闭您的应用程序,否则,请使用读取从属):

mysqldump -u user -pPASS --skip-extended-insert --no-create-info --no-create-db --compact > your.sql

这应该给你一个INSERT每行语句的文件。

然后使用split

split -l 1000000 your.sql your-sql

应该创建每个前缀为your-sql- 1,000,000 的文件。split可在 Linux、Unix 和 MacOSX 上使用。

让我知道这是否有帮助!

于 2012-09-08T19:16:03.623 回答
4

不分块也可以,但这里有一个解决方案:

SELECT *
INTO OUTFILE 'file_0.csv' -- Change the filename here
FIELDS
  TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"'
  ESCAPED BY '\\'
  LINES TERMINATED BY '\n'
FROM table
WHERE id BETWEEN 0 AND 1000000 -- And change the range here

请注意,您希望where索引列上使用 a 来限制您的范围,否则您的数据库将获得非常沉重的负载。

于 2012-09-08T18:17:02.163 回答