oracle - Oracle 中的数据加载

标签 oracle

我在加载数据时遇到问题。我必须将 800,000 行从一个表复制到 Oracle 数据库中的另一个表。

我先尝试了 10,000 行,但花费的时间并不令人满意。我尝试使用“BULK COLLECT”和“INSERT INTO SELECT”子句,但对于这两种情况,响应时间都在 35 分钟左右。这不是我想要的响应。

有人有什么建议吗?

最佳答案

阿尼类,

使用“INSERT INTO SELECT”是填充表格的最快方法。您可能希望使用以下一两个提示来扩展它:

  • APPEND:使用直接路径加载,绕过缓冲区缓存
  • PARALLEL:如果您的系统有多个 cpu,则使用并行处理,这是一次性操作或在一个“自私”进程消耗更多资源无关紧要的时候发生的操作。<

只需在我的笔记本电脑上使用追加提示即可在 5 秒内复制 800,000 个非常小的行:

SQL> create table one_table (id,name)
  2  as
  3   select level, 'name' || to_char(level)
  4     from dual
  5  connect by level <= 800000
  6  /

Tabel is aangemaakt.

SQL> create table another_table as select * from one_table where 1=0
  2  /

Tabel is aangemaakt.

SQL> select count(*) from another_table
  2  /

  COUNT(*)
----------
         0

1 rij is geselecteerd.

SQL> set timing on
SQL> insert /*+ append */ into another_table select * from one_table
  2  /

800000 rijen zijn aangemaakt.

Verstreken: 00:00:04.76

您提到在您的案例中此操作需要 35 分钟。您能否发布更多详细信息,以便我们了解究竟花费了 35 分钟的时间?

问候, 罗布。

关于oracle - Oracle 中的数据加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/892262/

相关文章:

java - 如何使用 LIKE 返回所有内容,包括 Oracle 中的空值?

sql - Oracle SQL : NOLOCK in join statment

sql - 正确的查询设计?交叉连接驱动临时报告界面

sql - @ 是什么意思!在 From 语句中的意思

sql - 合并到不匹配时插入 if 条件

database - "date"作为列名

sql - 性能调整或替代 distinct 子句

oracle - 手动将条目添加到 Entity Framework 应用程序的 Oracle 存储过程的 app.config 中

sql - 是否可以在 sql 中使用字母数字序列生成器

javascript - 如何替换 Oracle Commerce Cloud 购物车页面中默认的缺货消息?