gpt4 book ai didi

java - 数据库迁移

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:21 24 4
gpt4 key购买 nike

我正在使用 Java 开发数据库迁移工具。该工具正在将数据库表及其数据复制到目标数据库。但我希望它适用于不同的数据库。从 mysql 复制并在 derby 等中创建。使用 JDBC,我们可以收集有关表及其列的足够信息。但是我要问这个,如果我可以使用 sql free 在 java 上重新创建表。我的意思是不同的数据库有不同的数据类型,有时它们在 sql 语法上也不同。那么 JDBC 或任何其他库(可以是开源的)能否以一种简单的全局方式完成这项工作?

最佳答案

Apache 的 DdlUtils完成了我需要的。当我搜索 crossdb 时发现了它,它非常有用而且功能强大。它可以从头开始生成数据库,只需使用参数。或者它可以获取现有的数据库表定义,也可以使用索引定义。如果需要,您可以使用定界符(对我来说,使用 Apache Derby 是一个非常重要的选择)。您可以打印出这些定义或将它们直接应用于源数据库(我还没有尝试过第二个)。它翻译所选数据库的定义。但一个大问题是没有关于如何开始使用它的好教程。我搜索了这些包以找到一个好的起点。这是我所取得的成就,生成完整数据库表创建 sql 的示例代码。

DerbyPlatform dp = new DerbyPlatform();
dp.setDelimitedIdentifierModeOn(true);
Database dbs = new Database();
DerbyModelReader dmr = new DerbyModelReader(dp);
Database test = dmr.getDatabase(conn, "MyDBTest");

DerbyBuilder db = new DerbyBuilder(dp);
String testSqlDerby = dp.getCreateTablesSql(test, true, true);
System.out.println(testSqlDerby);

System.out.println("\n\n\n\n");

MySql50Platform mp = new MySql50Platform();
mp.setDelimitedIdentifierModeOn(true);
MySqlBuilder mb = new MySqlBuilder(mp);
String testSqlMysql = mp.getCreateTablesSql(test, true, true);
System.out.println(testSqlMysql);

关于java - 数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com