以块的形式导出包含数亿条记录的MySQL表?

时间:2012-09-08 18:11:32

标签: mysql export

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

2 个答案:

答案 0 :(得分: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上使用。

请告诉我这是否有帮助!

答案 1 :(得分: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限制范围,否则您的数据库将获得非常重负载。