Java将表复制到另一个模式

时间:2016-07-14 18:13:21

标签: java sql

我有一个存放桌子的地方。 在这个地方,我有一张桌子。让'将其命名为表A.表A列中的所有列都是varchars。 我想创建一个进程,遍历每个表并在数据库中的不同位置创建一个新表。 但是,此表必须具有正确的数据类型而不是varchars。 因此,如果表A中的列是值为1234的列,我想创建一个INT而不是varchar的字段。

我不知道如何在java中做到这一点。有人可以指出我正确的方向,我必须学习什么,以及是否太难了

由于

1 个答案:

答案 0 :(得分:0)

在我看来,你的问题有几个部分:

  1. EASY - 获取现有表格信息。您必须从jdbc连接获取DatabaseMetaData。关于该课程的文档是here,Google就是如何首先获取该对象的朋友。 (提示:this question应该可以帮到你)

  2. MEDIUM - 确定数据的真实数据类型。如果你试图将它缩小到几个简单的类型,如整数,字符串和日期,这可能实际上并不那么难。您只需为每列选择几行(该列不为空),然后尝试将其解析为不同的类型。如果成功,可能就是那种类型。如果它抛出异常,那么它不是。 Integer.parseInt(),LocalDateTimeFormatter等是你将要使用的东西。

  3. 如果您想获取表元数据,那么只需执行“SELECT * FROM< TABLE>”并且ResultSetMetaData将包含您需要继续使用的所有信息。

    1. 非常难 - 使用适当的新数据类型创建表。这很难,因为到目前为止已经提到的东西,但因为我们尚未谈论外键,索引和所有其他好东西。以编程方式映射所有这些事情将是一个非常难的问题。因此,我建议 NOT 尝试编程此部分。相反,让您的脚本输出旧数据类型到每个表的新数据类型的映射。然后,您可以进入SQL mananger并获取SQL脚本来生成该表。几乎每个SQL数据库管理工具都可以为表生成创建脚本。使用新数据类型编辑该脚本,为其指定新名称并运行它。