我有一个 250 MB 的备份 SQL 文件,但是新主机的限制只有 100 MB...
是否有一个程序可以将一个 SQL 文件拆分成多个 SQL 文件?
似乎人们回答了错误的问题……所以我将进一步澄清:
我只有 250 MB 的文件,而且只有使用 phpMyAdmin 的新主机,目前数据库中没有数据。我需要获取 250 MB 的文件并将其上传到新主机,但 SQL 备份文件上传大小限制为 100 MB。我只需要获取一个过大的文件并将其拆分为多个文件,每个文件仅包含完整有效的 SQL 语句(不能在两个文件之间拆分任何语句)。
答案1
首先转储模式(它肯定适合 2Mb,不是吗?)
mysqldump -d --all-databases
并将其恢复。
之后仅转储单独插入语句中的数据,这样您就可以拆分文件并恢复它们,而不必在远程服务器上连接它们
mysqldump --all-databases --extended-insert=FALSE --no-create-info=TRUE
答案2
分割备份文件最简单的方法是使用软件sqldumpsplitter
,它允许您将数据库文件分割成多个数据库文件。下载这里
或者使用这个终端命令。
split -l 600./path/to/source/file.sql./path/to/dest/file-
此处,600 是您希望分割文件中包含的行数。两个参数分别是文件的源和目标。
注意:您必须检查分割文件,不要分割任何命令。
答案3
我写mysqldumpsplitter(shell 脚本),它按照指示以快速简便的方式拆分数据库/表。查看所有可能的用例如何从 mysqldump 中提取。
sh mysqldumpsplitter.sh --source mysqldump-file.sql --extract DB --match_str database-name
答案4
SQLDumpSplitter3适用于 Linux、macOS 和 Windows。它包括图形用户界面和命令行界面。
在 macOS 上,命令行界面位于应用程序包中。
/Applications/SQLDumpSplitter3.app/Contents/MacOS/SQLDumpSplitter3
用于SQLDumpSplitter3
分割foobar.sql
成每 100 MB 的部分。
SQLDumpSplitter3 split --file foobar.sql --size 100 --unit MB
这将创建一个foobar_split
包含编号部分的文件夹。
根据我的经验,该应用程序有效真的很好,即使对于相当大的文件(10 GB 或更大)也是如此。