我想将一个非常大的 sql 文件导入我的测试数据库服务器,该文件大约 50GB。问题是如果我这样做mysql -uuser -p < sqlfile.sql
,由于文件加载时间本身,这将需要很长时间。
因此,我想将文件拆分为 100MB 左右的非常小的块,split -bytes=100M
但问题是拆分不会与 SQL 语句对齐(跨越文件边界的插入语句中断)。
现在我的问题是,有没有办法在命令行中流式传输多个文件?就像是
mysql -user -p <1.sql < 2.sql < 3.sql
依此类推,如果可能的话,我是否可以做一些 shell scripting-fu 来使用xargs
并for
循环为目录中的所有文件执行此操作?
编辑:我尝试拆分文件受这篇文章的约束,How to import LARGE sql files into mysql table。看来问题和我的一样。好吧,测试服务器是 8 GB,Xeon Quadcore,我在另一台服务器上尝试了相同的服务器,20 核 144GB,它在 11 小时运行时完成(共享一个,有很多 CPU/RAM 密集型工作正在进行...... )。测试服务器,该过程尚未完成。所以我猜这是RAM +文件加载开销。如果我错了,请纠正我。