首页 > 解决方案 > 复杂的mysqldump

问题描述

让我们设置这个例子:

我有一个包含四个表的数据库,设置如下:

a_database
   table_1
   table_2
   table_3
   table_4

现在,在我的项目中,我使用表 1 和表 2 来存储系统配置选项、设置等,表 3 和表 4 用于存储用户存储的数据。

假设我想将此数据库迁移到一个新数据库,但携带表 1 和 2 的数据和结构,并且只携带表 3 和 4 的结构。

这可以使用 mysqldump 命令完成吗?

mysqldump -u -p a_database > path-to-file 

标签: mysql

解决方案


您可以使用一个组合转储的命令来执行此操作,如下面的命令:

mysqldump -u -p  a_database table_1 table_2 > dump.sql && mysqldump -u  -p --no-data a_database table_3 table_4 >> dump.sql

据我所知,我认为你不能只用一个mysqldump命令来做到这一点。

您可以根据需要将以下命令添加到转储中:

--single-transaction--- > 选项如果你不想或不能做表锁

-d --- > -d 简称为--no-data。

-R --- > 如果您的数据库有存储过程/函数,还可以考虑添加 --routines(简称 -R)

-B --- > 包括 CREATE DATABASE 命令。--databases dbname(简写:-B dbname)

-r --- > 为避免 shell 的字符集干扰编码,-r schema.sql 优于 > schema.sql。使用 --default-character-set=utf8 (或其他)明确指定字符集也是一个好主意。您仍然需要检查转储文件顶部的集合名称。我之前曾陷入 MySQL 字符集编码地狱

--routines --- > 如果您的数据库有存储过程/函数,还可以考虑添加 --routines


推荐阅读