【问题标题】:Insert Query Builder for java为 java 插入查询生成器
【发布时间】:2013-05-08 07:14:49
【问题描述】:

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

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

是否有任何库可以帮助我处理用例?

【问题讨论】:

    标签: java sql-insert


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我只想知道是否有一个易于使用的库来“创建参数化插入语句”,这样我就不会编写无聊的字符串连接位;顺便说一句,你说得对,这是一种 ETL 工具
    【解决方案2】:

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

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

    【讨论】:

    • +1,我会看一下链接,我看不到插入的工作示例,并认为它可能已被省略 - 看起来我需要探索(我希望它需要更少是时候写一些我自己的东西了;-))
    • @Scorpion:好点。我很快会在手册中添加更多“普通 SQL”示例:#2444
    【解决方案3】:

    你需要做的设置是:

    1. 读取行

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

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

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

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

    而针对上述目的,可以使用TransmorphEZMorphCommons-BeanUtilsDozer

    【讨论】:

      猜你喜欢
      • 2019-09-06
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多