我希望能够将这些数据库对象导出到一个文件中。它应该以这样一种方式运行该文件(稍后),以便能够在原始数据库或不同的数据库中重新创建相同的视图、触发器、函数、存储过程和事件。
换句话说,我不需要表定义及其关联的索引和约束。
我原本以为mysqldump
上会有简单明了的选项,但事实似乎并非如此。
这对我来说几乎是这样:
mysqldump -u root -p source_database --no-data --no-create-db --no-create-info
--routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql
但是明显缺少的是events
和views
。另外,我需要根据情况删除或替换每个对象,因为它可能已经存在。
我会很感激任何在正确方向上的推动。也许我需要一个脚本来实现这一点?
EDIT:我为什么需要这个?
我希望能够运行一个脚本,一次重新创建所有这些对象。这可能是生产服务器维护的一部分,使用来自开发服务器的更新副本。
现在,prod服务器上的某些表可能也需要更新(ALTERED),但这些表更敏感,需要更多的考虑。据我所知,您可能一天24次删除和重新创建视图、事件、触发器和例程(现在我夸张了!),而很少考虑数据冲突。
3条答案
按热度按时间m0rkklqb1#
试试这个我已经试过了它不显示我任何表在.sql文件
wb1gzix02#
您需要添加“--events”
此外,对于视图,您可能需要更新版本的MySQL。
--add-drop-table(放在--skip-opt后面)可能适用于旧版本。
来自手册:
--紧凑型
zzwlnbp83#
MYSQL:转储数据库的过程,函数,视图和触发器。
导出包含所有过程、函数、视图和触发器的数据库沿着表结构及其数据。
mysqldump <other mysqldump options> --routines export.sql