mysql - 将多个 .sql 表转储文件合并到一个文件中

标签 mysql shell

假设我有数据库 A 和表 b。给定多个 .sql 文件 b1、b2、...、bn,每个文件都对应于 b 的互斥表转储,我将如何将所有文件 b1、b2、...、bn 合并到一个 .sql 表文件中?或者我如何将单个文件的导入合并到一个表中?

最佳答案

没有专门的工具可以做到这一点。您可以简单地连接文件:

$ cat b1.sql b2.sql b3.sql > b_all.sql

除了这些 .sql 文件的典型内容是一个 DROP TABLE,然后是一个 CREATE TABLE,然后是很多 INSERT 语句。如果每个单独的转储文件都是这样格式化的,那么如果您按顺序恢复它们,每个转储文件都会删除 TABLE 并删除前面文件导入的数据。

您可以在没有 DROP/CREATE 语句的情况下创建转储文件:

$ mysqldump --no-create-info <database> <table> ...

但是如果你已经有了转储文件(不能重新转储它们),并且你想去掉除第一个文件之外的所有文件中的 DROP/CREATE 语句:

$ ( cat b1.sql ; cat b2.sql b3.sql | sed -e '/^DROP TABLE/,/^-- Dumping data/d' ) > b_all.sql

关于mysql - 将多个 .sql 表转储文件合并到一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582660/

相关文章:

mysql - SQL 基于时间戳差异计算ON Multi table with multi condition - MySQL

mysql - phpmyadmin - 如何使(显示的)列宽比列标题窄?

Mysql多列索引

php - mysql数据库当前时间与其他时间的区别

shell - 在日志文件中搜索 - 退出代码

php - MYSQL:按数组的平均值排序

linux - 从 sudo-ed 环境启动 bash shell

shell - 将 sed 的输出插入到模式之间的另一个文件中

python - 隐藏 os.system 产生的控制台输出

linux - ssh 注销后后台 shell 脚本无法访问目录,即使使用 nohup