将数据批量插入 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 数据库的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章