当前位置: 首页 > 面试题库 >

数据库迁移

锺离嘉茂
2023-03-14
问题内容

我正在使用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);


 类似资料:
  • 在开发和维护一个数据库驱动的应用程序时, 数据库的结构会像代码一样不断演变。 例如,在开发应用程序的过程中,会增加一张新表且必须得加进来; 在应用程序被部署到生产环境后,需要建立一个索引来提高查询的性能等等。 因为一个数据库结构发生改变的时候源代码也经常会需要做出改变, Yii 提供了一个 数据库迁移 功能,该功能可以记录数据库的变化, 以便使数据库和源代码一起受版本控制。 如下的步骤向我们展示了

  • 简介 迁移就像是数据库的版本控制, 允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和 Laravel 的 数据库结构生成器配合使用,让你轻松地构建数据库结构。如果你曾经试过让同事手动在数据库结构中添加字段,那么数据库迁移可以让你不再需要做这样的事情。 Laravel 的 Schema 门面 对所有 Laravel 支持的数据库系统提供了创建和操作数据表的相应支持。 生成迁移 使用 Art

  • 数据库迁移可以理解为对数据库结构的版本管理,可以有效的解决团队中跨成员对数据库结构的管理。 生成迁移 通过 gen:migration 生成一个迁移文件,命令后面跟的是一个文件名参数,通常为这个迁移要打算做的事情。 php bin/hyperf.php gen:migration create_users_table 生成的迁移文件位于根目录下的 migrations 文件夹内,每个迁移文件都包

  • 在首次创建数据库,您可以使用版本0指定一个迁移运行时! 注意:任何提供的子类,如,UpdateTableMigration和应该只覆盖onPreMigrate()和调用super.onPreMigrate(),所以它的正确实例化。 基类,是一个非常简单的类来执行迁移: 此处是添加到数据库的列的一个例子: 现在,我们要添加一列到这个表。我们有两种方式: 通过Migration:

  • 并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。

  • Active Record 数据库迁移 迁移是 Active Record 提供的一个功能,按照时间顺序管理数据库模式。使用迁移,无需编写 SQL,使用简单的 Ruby DSL 就能修改数据表。 读完本文,你将学到: 生成迁移文件的生成器; Active Record 提供用来修改数据库的方法; 管理迁移和数据库模式的 Rake 任务; 迁移和 schema.rb 文件的关系; 1 迁移简介 迁移