搜索

首页  >  问答  >  正文

mysqlsh 转储和加载完整模式

我想使用 mysqlsh 执行以下操作:

  1. 转储给定数据库的完整架构(不仅仅是表,还有函数、触发器以及与此数据库架构相关的所有内容,与 mysqldump -R DATABASE > DATABASE.sql 相同)
  2. 将此完整架构加载到我刚刚创建的全新数据库中(类似于 mysql --database=NEWDATABASE < DATABASE.sql

当我运行 mysqlsh --execute 'util.dumpTables("DATABASE", [], "SQL/DATABASE", {all:true});' 时,它当然只是转储表,这可以轻松地使用此命令导入到全新的数据库 mysqlsh --database=NEWDATABASE --execute 'util.loadDump("SQL/DATABASE", {schema: 'NEWDATABASE',ignoreVersion:true,resetProgress:true});。问题是它缺少函数和存储过程。

然后我尝试了 mysqlsh --execute 'util.dumpSchemas(["DATABASE"], "DATABASE");',然后使用 mysqlsh --database=NEWDATABASE --execute 'util 将其加载到新数据库中.loadDump("DATABASE", {dryRun: true,ignoreVersion:true});',但我立即注意到它正在尝试加载到原始数据库,而不是我的新数据库。那么如何将其加载到一个名称完全不同的新数据库中呢?

如果您想知道,我正在尝试学习如何最大限度地利用 mysqlsh 来满足我的用例。因此,在这种情况下,旧的 mysqldump 不是一个选项。

P粉662802882P粉662802882241 天前455

全部回复(1)我来回复

  • P粉764785924

    P粉7647859242024-03-27 10:18:17

    我认为您只需在尝试加载 .sql 文件之前使用文本编辑器对其进行编辑即可。

    该工具实际上用于转储架构并将其导入到不同的 MySQL 实例,但保持架构名称不变。

    回复
    0
  • 取消回复