【问题标题】:Suggestion for loading data of 2M records in to DB将2M条记录的数据加载到DB的建议
【发布时间】:2018-04-23 20:41:38
【问题描述】:

用户通过具有 200 万条记录的应用程序 (JSF) 上传数据文件,我必须将其上传到数据库。通过 JAVA 异步调用加载是占用更多内存的内存不足异常,而且大部分时间它都会超时。 因此,我所做的是,将上传的文件作为 CLOB 存储在 table1 中,我使用每 15 分钟运行一次的 UNIX shell 脚本来查看 table1 是否有未处理的记录,如果然后读取该 CLOB 文件并使用 SQLLDR 加载到 table2相同的 shell 脚本。它工作正常,但处理记录有 15 分钟的延迟。 所以我认为可以通过 PL/SQL 包或过程运行相同的 SQLLDR 进程,并且可以通过 JAVA JDBC 调用来调用相同的包.. rite?有什么例子吗?

【问题讨论】:

    标签: oracle java-8 clob sql-loader


    【解决方案1】:

    如果是一次性导出/导入,您可以使用 SQL Developer。它使您能够以加载器格式导出显示的行。 B/Clobs 被导出为单独的文件。

    关注Oracle's blog

    LOAD DATA
    INFILE 'loader.txt'
      INTO TABLE my_table
      FIELDS TERMINATED BY ','
      ( id         CHAR(10),
        author     CHAR(30),
        created    DATE "YYYY-MM-DD" ":created",
        fname      FILLER CHAR(80),
        text       LOBFILE(fname) TERMINATED BY EOF
      )
    

    “fname”是一个任意标签,我们可以使用“fred”,它会 工作完全一样。它只需要在两者上相同 使用它的行。

    loader.txt:
    1,John Smith,2015-04-29,file1.txt
    2,Pete Jones,2013-01-31,file2.txt
    

    如果您想知道如何将 CLOB 列转储到文件中,请参考Dumping CLOB fields into files?

    【讨论】:

    • @Krzyztof 不,这不是一次性的。我打算使用 shell 脚本
    • 来自客户端还是服务器?如果是服务器,为什么不用数据泵?
    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多