将数据批量插入 Oracle 数据库的最佳方法

Posted

技术标签:

【中文标题】将数据批量插入 Oracle 数据库的最佳方法【英文标题】:Best way to bulk insert data into Oracle database 【发布时间】:2011-09-05 09:53:29 【问题描述】:

我将创建很多数据脚本,例如 INSERT INTO 和 UPDATE

如果不是 1,000,000 则将有 100,000 多条记录

将这些数据快速导入 Oracle 的最佳方法是什么?我已经发现 SQL Loader 不适合这个,因为它不会更新单个行。

谢谢

更新:我将在 C# 中编写一个应用程序来执行此操作

【问题讨论】:

搜索“Oracle 批量插入” 【参考方案1】:

通过SQL*Loader 加载暂存表中的记录。然后使用批量操作:

插入选择(例如"Bulk Insert into Oracle database") 大规模更新 ("Oracle - Update statement with inner join") 或单个MERGE 语句

【讨论】:

如果我想更新一行,我可以在同一张表上做一个内部连接,还是不行 典型的场景是你有很多行要加载。每行将被插入(如果是新的)或更新到目标表中。这是 MERGE 语句的标准情况。目前尚不清楚它是否适用于您的情况。 当记录在内存中而不是在文件中时,有没有办法使用 SQL*Loader?例如,在 spark 数据框中。【参考方案2】:

为了尽可能快地保存它,我会将它全部保存在数据库中。 使用external tables(允许Oracle读取文件内容), 并创建一个存储过程来进行处理。

更新可能会很慢,如果可能的话,考虑基于旧(有更新)中的所有记录创建一个新表,然后切换新旧表可能是个好主意。

【讨论】:

【参考方案3】:

如何使用 MS Excel 或 LibreOffice Calc 等电子表格程序?这就是我执行批量插入的方式。

    以表格格式准备数据。 假设您有三列,A(文本)、B(数字)和 C(日期)。在 D 列中,输入以下公式。相应调整。

="INSERT INTO YOUR_TABLE (COL_A, COL_B, COL_C) VALUES ('"&A1&"', "&B1&", to_date ('"&C1&"', 'mm/dd/yy'));"

【讨论】:

以上是关于将数据批量插入 Oracle 数据库的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

C# Oracle 转换为批量上传

使用 .NET 批量插入到 Oracle

Oracle数据的批量插入

Oracle批量插入数据

在Salesforce中Upsert批量与批量Upsert

Oracle批量插入数据时报字段无法识别错误