我正在寻找一种在Oracle 9数据库中执行多行插入的好方法.以下内容适用于MySQL,但在Oracle中似乎不受支持.
INSERT INTO TMP_DIM_EXCH_RT
(EXCH_WH_KEY,
EXCH_NAT_KEY,
EXCH_DATE, EXCH_RATE,
FROM_CURCY_CD,
TO_CURCY_CD,
EXCH_EFF_DATE,
EXCH_EFF_END_DATE,
EXCH_LAST_UPDATED_DATE)
VALUES
(1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008');
Run Code Online (Sandbox Code Playgroud) 基本上,我需要从序列中查询大约一千个NEXTVAL.我可以在一个循环中查询它们,或者我可以通过一个带有reeeeeally大表的连接来查询它们.
有没有更少的hacky方式?
UPD. 基本上,我有一个对象操作的时间表.每个对象都有一个生成的UUID或来自数据库的ID.在计算出最佳计划后,我需要将其写入DB,但表中的每个ID都来自一个序列.所以我需要查询该序列中的一些ID.问题是循环查询很慢,因为数据库离我很远,而且我不能在循环中执行数十个查询时松散几秒钟.所以我需要在一个查询中查询所有这些新ID.
我有超过100万个插入查询要在Oracle SQL Developer中执行,这需要花费很多时间.有没有办法优化这个.
我正在尝试将多个记录插入表中,但对每个记录使用相同的序列值.
这类似于:如何使用序列值将多行插入oracle?但是给出的答案会插入多个不同的序列号,并且我希望多个recs使用相同的序列号.
create table test1 (
col_a number,
col_b number
);
commit;
create sequence test_seq increment by 1 start with 2 minvalue 1 nocycle nocache noorder;
commit;
insert into test1 (col_a, col_b)
select a.object_id, test_seq.nextval from (
select object_id from all_objects where rownum < 5
) a;
commit;
Run Code Online (Sandbox Code Playgroud)
上面的问题是它检索并插入多个(不同的)"test_seq.nextval"值,我希望为每一行插入相同的值.
这甚至可以在直接sql中使用而不诉诸触发器(或多个sql语句)?相关问题的答案之一暗示可能不是,但我不清楚.
谢谢.
如果有帮助,我正在使用Oracle 11g.
oracle ×4
sql ×4
database ×1
oracle11g ×1
oracle9i ×1
sequences ×1
sql-insert ×1
sql-scripts ×1