mysql - 复杂的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
解决方案
您可以使用一个组合转储的命令来执行此操作,如下面的命令:
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
推荐阅读
- amazon-s3 - AWS DMS Redshift 作为目标
- clojurescript - 正在使用哪些试剂 Form 2 组件函数参数?
- hyperledger-fabric - 如何在 hypledger fabric -ca 的 postgres-db 中启用 TLS?
- javascript - 无法更新 highcharts 图表中的绘图边框宽度
- kubernetes - 如何为 OpenShift 3.11 路由使用与默认通配符 dns 名称不同的 dns 名称?
- swift - 什么是 iOS < 9 的 CNLabeledValue 替代品?
- android - 如何处理 API URL 中的特殊字符 - 改造
- jquery - 将 jQuery scoll 绑定到 div
- javascript - 按顺序将其他对象中的arrayof分开
- node.js - 模拟节点测试的命令行条目