我有一个47 GB的单个表的MySQL转储:
http://dumps.wikimedia.org/commonswiki/latest/commonswiki-latest-image.sql.gz
我最终希望将其转换到PostgreSQL中,但由于我没有找到一种简单的方法将MySQL SQL转换为PostgreSQL SQL,所以我会将其转换为MySQL,然后编写一个小的ETL脚本来完成这一任务。
我最初尝试使用MySQL WorkBench数据导入/恢复加载它,但是它失败了。
现在我已经运行了split -l 2000 commonswiki-latest-image.sql,有20个文件,每个文件大约有2GB,但是仍然失败了:
23:12:28 Restoring C:\temp\commonswiki\xaa.sql
Running: mysql.exe --defaults-extra-file="c:\users\jmurdoch\appdata\local\temp\tmpi_ltz8.cnf" --host=127.0.0.1 --user=root --port=3306 --default-character-set=utf8 --comments --database=mediawikiimages < "C:\\temp\\commonswiki\\xaa.sql"
ERROR 2013 (HY000) at line 331: Lost connection to MySQL server during query
Operation failed with exitcode 1
00:54:17 Import of C:\temp\commonswiki\xaa.sql has finished with 1 errors它也非常慢,因为它在近两个小时内只导入了209236行,但我认为大约有2000万个项目要导入,所以按这个速度,导入需要200个小时。
我使用的是Windows7、MySQL 5.6.14和MySQL工作台6。
我的主要问题是:
发布于 2014-02-11 08:50:05
使用
max_allowed_packet = 256M在MySQL中,可以在没有错误的情况下导入文件。
发布于 2020-03-26 20:35:04
克里西米尔-普利斯对如何将大型(14 GB) MySQL转储文件导入新的MySQL数据库?关于堆栈溢出的回答帮助了我:
mysql -u根-p set全局net_buffer_length=1000000;--将网络缓冲区长度设置为大字节数集全局max_allowed_packet=1000000000;--将允许的最大数据包大小设置为大字节数集foreign_key_checks = 0;-禁用外键检查以避免延迟、错误和不必要的行为源file.sql --导入sql转储文件集foreign_key_checks = 1;-记住在过程完成时启用外键检查!
来自尼古拉斯的评论:
在mariadb上,检查最大值:设置全局net_buffer_length=1048576;设置全局max_allowed_packet=1073741824;
https://dba.stackexchange.com/questions/58493
复制相似问题