【问题标题】:Bulk insert in oracle在 oracle 中批量插入
【发布时间】:2015-09-16 13:25:54
【问题描述】:

我需要插入作为接口文件(文本文件)提供的大量记录。 现在正在使用这种格式插入记录。

INSERT ALL
  INTO POSTAL_CODE( postal_code,desc)
    VALUES('100','Coimbatore')
  INTO POSTAL_CODE (postal_code,desc)
    VALUES('101','Mumbai') SELECT * FROM DUAL;

但这会导致性能不佳。我是数据库新手。所以请帮助我更快地插入记录。但是在 db2 中是支持这种格式的。

INSERT INTO POSTAL_CODE( postal_code,desc)
    VALUES('100','Coimbatore'), (postal_code,desc),('101','Mumbai');

但是为什么 oracle 不支持这种类型的插入。请帮我。我坚持这一点。我需要为此使用另一种解决方案,而且应该更快....

【问题讨论】:

  • 一次插入多少行?如果超过几百个,您可能会遇到与this question 相同的问题。解决方案是将语句分解为每次运行数百行,并将INSERT ALL 转换为UNION ALL,就像在 Rahul 的回答中一样。
  • 一次最多插入 300 万条记录,乔恩

标签: oracle db2 bulkinsert


【解决方案1】:

您可以更改以下语句

INSERT INTO POSTAL_CODE( postal_code,desc) VALUES('100','Coimbatore'),
(postal_code,desc),('101','Mumbai');

如下所示,使用UNION 也应该在Oracle 中工作

INSERT INTO POSTAL_CODE( postal_code,"desc") 
select '100','Coimbatore' from dual
union all
select '99','Goa' from dual
union all
select '101','Mumbai' from dual;

您应该检查 Oracle 为此目的提供的实用程序,例如 SQL*Loader

同时查看其他 SO 帖子 Loading data from a text file to a table in oracle

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2014-06-22
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多