【问题标题】:Oracle insert parallel for empty databaseOracle 为空数据库并行插入
【发布时间】:2018-12-19 17:22:44
【问题描述】:

我使用的是 Oracle 11GR2,当我尝试向表中插入大量行时出现问题。 这是我的桌子:

CREATE TABLE ref_bic (
    id_bic              NUMBER(9),
    country_id          NUMBER(9)           NOT NULL,
    bank_code           VARCHAR(5),
    bic_code            VARCHAR(20),
    bank_name           VARCHAR(150)        NOT NULL,
    CONSTRAINT pk_ref_bic PRIMARY KEY (id_bic)
);

这是我要插入的示例:

INSERT INTO REF_BIC (country_id, bank_code, bic_code, bank_name) VALUES (123, '123456', '12345', 'SOME BANK NAME');

请注意,id_bic 是自行生成的。

现在这是我的问题,第一次创建数据库时,我有超过 30k 行要插入到我的数据库中,每次插入所有数据都需要超过 30 分钟。

听说可以使用 PARALLEL 和 APPEND 插入更快,而且唯一的要求就是使用

ALTER SESSION FORCE PARALLEL DML;

我试过了,好像不行

INSERT /*+ APPEND PARALLEL(REF_BIC) */ INTO REF_BIC (country_id, bank_code, bic_code, bank_name) VALUES (123, '123456', '12345', 'SOME BANK NAME');

它没有被解释,即使我去掉/* */,它也只会让我出错。

现在,似乎并行插入需要来自像

这样的子查询
INSERT /*+ APPEND PARALLEL(REF_BIC) */ INTO REF_BIC SELECT * FROM SOME_TABLE;

但我不能使用子查询,因为我是第一次创建我的数据库,它完全是空的。

所以这是我的问题:

  • 并行插入是否可以在没有子查询的情况下工作?
  • 如果没有,我怎样才能更快地插入我的

【问题讨论】:

    标签: oracle parallel-processing insert


    【解决方案1】:

    我有超过 30k 行这样的行要插入到我的数据库中

    使用文本编辑器/excel 构建并将它们全部放入由UNION ALL 连接的单个查询中,我敢打赌它会更快(有或没有并行提示)

    insert into REF_BIC (country_id, bank_code, bic_code, bank_name) 
    select 123, '123456', '12345', 'SOME BANK NAME'   from dual union all
    select 124, '123457', '12348', 'SECOND BANK NAME' from dual union all
    ..
    ..
    

    【讨论】:

    • 这似乎比我当前使用的方法工作得更快,谢谢。我需要将
    • 好的,所以我已经将
    【解决方案2】:

    首先,使用like 类型,去掉bank_code 和bic_code 值周围的单引号。

    只需将您的插入语句转换为匿名块。先放行之前

    BEGIN
    

    在最后放行之后

    commit;
    end;
    

    我有类似的情况,大约有 12K 插入记录,在将其夹在匿名块中后,它在几秒钟内完成。

    【讨论】:

    • 我知道我应该使用 like 类型,但我不能,在某些情况下 bank_code 或 bic_code 可以包含字母。
    • 我也试过匿名块,30k太大了,似乎并没有真正提高插入速度,对不起:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2014-07-09
    相关资源
    最近更新 更多