我使用 liquibase 变更集创建了一个 Postgresql 数据库 A。现在,我正在创建一个应用程序,该应用程序允许创建新的数据库 B 并从数据库 A 实时复制架构,包括 liquibase 变更集,因为数据库以后仍然可以更新。请注意,在数据库 A 中复制的架构时,可能已经更新,从而使基本变更集过时。
我的主要问题是:
--
让我添加更多的上下文:
我希望这是清楚的。
谢谢。
以下是我如何使用LiquibaseJava库解决这个问题的:
1.)将更改日志从源数据库导出到临时文件(XML)中。
Liquibase liquibase = new Liquibase(liquibaseOutFile.getAbsolutePath(), new FileSystemResourceAccessor(), sourceDatabase);
liquibase.generateChangeLog(catalogAndSchema, changeLogWriter, new PrintStream(liquibaseOutFile.getAbsolutePath()), null);
2.)执行临时文件到新的数据源。
Liquibase targetLiquibase = new Liquibase(liquibaseOutFile.getAbsolutePath(), new FileSystemResourceAccessor(), targetDatabase);
Contexts context = new Contexts();
targetLiquibase.update(context);
以下是完整的代码:https://czetsuya-tech.blogspot.com/2019/12/generate-postgresql-schema-using-java.html
使用Liquibase或Flyway等数据库模式迁移工具的要点是拥有一个关于数据库表结构的“可信单一数据源”。您的Liquibase变更集(或Flyway脚本)应该是数据库的可信单一数据源。
如果您在运行时更改数据库的结构,例如添加一个名为 people
的表,超出了迁移工具的范围,那么您违反了游戏规则。您将违背使用架构迁移工具的目的。使用架构迁移工具的目的是通过该工具进行所有架构更改。
如果您需要在生产环境中运行时添加表,您应该将Liquibase变更集(或Flyway脚本)的物理文件放入数据库服务器环境的文件系统中,然后调用Liquibase(或Flyway)来运行迁移。
也许你误解了事件的顺序:
或者,如果复制服务器“A”以创建服务器“B”,则该副本应包含完全相同的Liquibase变更集。因此,在复制过程结束时,两个数据库变更集是相同的。
我的本地机器中有一个MySQL数据库(在XAMPP中),我使用phpMyAdmin访问该数据库。我也有一个网站托管在GoDaddy上。我通常保持脱机状态,并对数据库中存储的数据进行更改。 我想知道如何能够自动复制本地数据库中的更改到GoDaddy的服务器中的更改,或者可以使用单击按钮进行复制。 我看到了一些关于复制的答案,但我无法将数据从本地机器复制到GoDaddy的服务器。 提前谢谢!
问题内容: 我正在使用Microsoft Sql Server Management Studio。我目前有一个包含数据的现有数据库,我将其称为DatabaseProd。我还有一个第二个数据库,其中包含用于测试的数据,因此数据既不完全正确也不是最新的。我将这个数据库称为DatabaseDev。 但是,DatabaseDev现在包含新添加的表和新添加的列等。 我想将此新模式从DatabaseDev复
问题内容: 如何从一个数据库复制到另一个数据库。 数据库名称visco 我想将所有表从visco数据库复制到新数据库名称作为neptune 我创建了一个没有任何表的数据库,然后尝试从database1.bak文件还原数据库,然后显示错误为 需要查询帮助 问题答案: 使用SQL Server Management Studio: 选项1 ->右键单击要复制的数据库 ->选择“任务”>“生成脚本” -
问题内容: 我正在尝试将数据从一个数据库复制到另一个数据库。一切工作正常,直到修改了源数据库中的一行之一(下面的堆栈跟踪)。按预期将新行添加到目标数据库。 对于每个数据库连接(mysql和hsqldb),我都有一个由以下bean组成的上下文文件: 在我为每个数据库连接中创建一个: 很简单: 我正在使用Spring Integration将2种服务方法连接在一起。服务方法如下: 我尝试过从s 分离列
问题内容: 我需要将数据从一个表复制到另一个表。这两个表几乎具有相同的结构,但是位于不同的数据库中。 我试过了 我尝试此操作,但跨数据库出现错误…未实现 问题答案: 这是一个非常简单的任务。只需为此目的使用dblink: 如果您需要定期从外部数据库中获取数据,明智的做法是定义服务器和用户映射。然后,您可以使用较短的语句:
问题内容: 我需要将表从一个数据库复制到另一个数据库。这将是一个cronjob。哪一种是最好的方法?PHP脚本或Shell脚本。PHP的问题是,两个数据库都有不同的用户名和密码,所以我不能这样做。 我应该只连接第一个DB以获得所有记录,然后使用WHILE循环将所有记录插入新数据库,还是有更好的方法? 我更喜欢用shell脚本代替PHP脚本来执行此操作。 谢谢 问题答案: 我把它丢了。比任何基于PH