建议将2M记录的数据加载到DB中

时间:2018-04-23 20:41:38

标签: oracle java-8 clob sql-loader

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

1 个答案:

答案 0 :(得分:0)

如果是一次性导出/导入,您可以使用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?