我们有一个用C和Pro*C编写的应用程序,它使用主机阵列和批量插入将日志文件中的数据插入到Oracle 11.2数据库中.这使用APPEND和NOLOGGING提示来利用直接路径插入并减少生成的重做量.NOLOGGING这是有道理的,因为它是一个临时的临时表,如果需要,可以从日志文件中恢复数据.
我们试图在Java中复制此功能,但无法使用大量记录的直接路径插入.这可能是Java/JDBC吗?
我尝试和调查过的事情是:
APPEND_VALUES提示.这听起来很有希望,但没有多大意义,因为JDBC批处理似乎并没有实际执行许多记录的"数组"插入.据我所知,直接路径插入仅支持子查询语法,而不支持VALUES子句.这不能用作数据库中尚不存在的要插入的数据.
我一直无法找到任何Java能够使用Pro*C使用的主机数组样式加载的引用.
顺便说一句,我们正在调查外部表加载或SQL*加载器,并了解这些工具能够直接路径加载,但这个问题实际上是关于是否可以从Java直接路径插入获得明确的答案.了解Java API的局限性不仅对此项目有用,而且对将来的项目也很有用.
所以重申这个问题,有没有办法可以利用Java中的直接路径插入?
相关问题:
几年前,Thomas Kyte说(这里):
我最喜欢使用外部表:
尽快加载这个非常大的文件.过去,将脚本设置为并行直接路径加载.协调所述脚本的触发.查看日志文件以确保它们全部完成.拆分输入文件或使用跳过并加载以对文件进行切片.总之,一个痛苦的屁股.
现在:
Run Code Online (Sandbox Code Playgroud)create table ET parallel; create table new_table (...) parallel as select * from ET;并行直接路径负载变得微不足道.
除非这是无效的语法...
如何使用Oracle的外部表执行"并行直接路径加载"?