【发布时间】:2014-06-05 06:58:03
【问题描述】:
我正在读取一个文本文件,并创建了一个如下字符串以将数据插入数据库 (Oracle 11g)。
INSERT ALL
INTO INDEX_DATA (DATETIME, COMMODITY, IDX, IDX_VALUE, VCDATE) VALUES ('15-May-2014', 'FN1 Comdty', 'PX_LA', 44.75, SYSDATE)
INTO INDEX_DATA (DATETIME, COMMODITY, IDX, IDX_VALUE, VCDATE) VALUES ('15-May-2014', 'FN1 Comdty', 'PX_H', 45.1, SYSDATE)
INTO INDEX_DATA (DATETIME, COMMODITY, IDX, IDX_VALUE, VCDATE) VALUES ('15-May-2014', 'FN1 Comdty', 'PX_L', 44.47, SYSDATE)
and so on ...7000 rows
select * from dual
在一次插入上述查询时,coldfusion 页面超时。该查询适用于 100 条记录。
我真的不确定这是 Oracle 还是 Coldfusion 限制,因为 Toad 也没有响应相同的查询。
如果是冷融合问题,请告知是否有另一种插入数据的方法,而不是为每个插入语句访问数据库。
编辑 1:如果不存在其他解决方案,我可以使用标志并每隔 n 行插入一次。
【问题讨论】:
-
为什么不使用文本文件作为输入来定义一个外部表呢?生成这种 SQL 不是一个很好的解决方案,它会用垃圾填充共享池,导致许多额外的解析并减慢整个数据库的速度。插入期间会话有哪些等待事件? (查看 v$session)
-
如果您可以访问 Oracle 的批量加载程序,那将是更好的方法。
标签: oracle coldfusion oracle11g coldfusion-9