我有一个包含大量记录的 MySQL 表,有没有一种简单的方法可以将它导出为 .CSV 块,每块有一百万条记录?
问问题
4952 次
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 回答