我有一个包含大量记录的MySQL表,有没有一种简单的方法可以将它导出到.CSV块中,每个包含一百万条记录?
答案 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
限制范围,否则您的数据库将获得非常重负载。