我需要将整个表从一个MySQL数据库移动到另一个数据库.我没有第二个的完全访问权限,只有phpMyAdmin访问权限.我只能上传(压缩)小于2MB的sql文件.但第一个数据库表的mysqldump的压缩输出大于10MB.

有没有办法将mysqldump的输出分割成更小的文件?我无法使用split(1),因为我无法将文件放回远程服务器.

还是我错过了另一个解决方案?

Edit

第一张海报建议的mysqldump的--extended insert=FALSE选项会产生一个错误.sql文件,然后可以将其拆分为可导入文件,前提是使用合适的--line选项调用split(1).通过反复试验,我发现bzip2会压缩.sql文件减少了20倍,所以我需要计算出大约有多少行sql代码对应于40MB.

推荐答案

首先转储模式(它肯定适合2Mb,不是吗?)

mysqldump -d --all-databases 

并恢复它.

之后,只在单独的insert语句中转储数据,这样您就可以拆分文件并恢复它们,而无需将它们连接到远程服务器上

mysqldump --all-databases --extended-insert=FALSE --no-create-info=TRUE

Mysql相关问答推荐

如何改进对另一个表中多行的查询依赖性

MySQL InnoDB:可以在没有回滚损失的情况下从运行的查询中进行大型插入吗

MySQL将JSON值从对象类型更改为数组

如何将多个字符串插入变量

估计对大表进行分区所需的时间

MySQL 使用了错误的索引

SQL从具有相同列的行中 Select 最后一行

如何查询打印已售罄的产品? [MYSQL]

为什么从我的 SQL 查询中删除 BINARY 函数调用会如此显着地改变查询计划?

显示值为空的所有列名

MySql,将日期和时间列组合成时间戳

MySQL Workbench - 如何同步 EER 图

为什么数据库行元组中的整数具有L后缀?

如何在 MySQL 的日期时间字段中存储 NULL 值?

MySQL中的行值增加和减少1

如何从两个不同的日期获得年份差异?

MySQL:切换 int 字段值的简单方法

在 MySQL 中仅 Select 仅包含字母数字字符的行

将数据库从 Postgres 迁移到 MySQL

MySQL中的base64编码