1

我有一个用例,我需要从文件中读取行,使用引擎对其进行转换,然后将输出写入数据库(可以配置)。虽然我可以编写自己的查询构建器,但我很想知道是否已经有可用的解决方案(库)。

我在网上搜索并可以找到 jOOQ 库,但它看起来是类型安全的并且具有代码生成工具,因此可能适合静态数据库模式。在我拥有数据库的用例中,可以动态配置元数据,并以编程方式读取元数据并使其可用于写入目的(因此可以使用表列表,用户可以选择要写入的列和插入脚本这些列需要动态创建)。

有没有可以帮助我解决用例的库?

4

3 回答 3

2

如果我理解正确,您需要查询数据库结构,通过 GUI 显示结果并让用户将数据从文件映射到该结构?

假设是这种情况,您不是在寻找“库”,而是在寻找ETL工具。

或者,如果您打算自己编写一些东西,那么(非常)基本的方法是:

  • 数据库的结构使用Connection.getMetaData(). 驱动程序之间的确切用法可能会有所不同,因此您需要创建一个满足您需求的抽象层 - 我假设您只是对这里的表结构感兴趣。
  • 文件的格式需要映射到与表类似的结构。
  • 提供一个 GUI,允许用户将文件中的元素连接到表中的列,包括所需的任何类型映射。
  • 根据文件元素到列的映射创建参数化插入语句 - 这只是字符串连接的简单位。
  • 循环抛出文件中的行,为每个行执行批量插入。

我的建议是,获得一个ETL工具,这听起来像是一个简单的问题,但它充满了特质——即使是 80% 的解决方案也将是艰难且耗时的。

于 2013-05-08T07:59:10.970 回答
1

jOOQ(您在问题中引用的库)可以在不生成代码的情况下使用,如 jOOQ 手册中所示:

搜索用户组时,您会发现其他用户以您想要的方式利用 jOOQ

于 2013-05-08T11:40:15.370 回答
0

您需要做的设置是:

  1. 读取行

  2. 将每一行构建成一个对象

  3. 将上述对象转换为目标对象

  4. 将目标对象插入数据库

在以上 4 个步骤中,您唯一需要做的就是第 3 步。

为了上述目的,您可以使用TransmorphEZMorphCommons-BeanUtilsDozer等。

于 2013-05-08T07:58:22.640 回答