我必须使用单个现有记录将一百万条记录插入到表中,只需增加PK即可。有没有一种简单的方法可以做到。
答案 0 :(得分:1)
是的,这是一个简单的方法。这是一个生成一百万行并将其交叉连接到现有表中的一行(在本例中为双重)的简单示例:
WITH dummy AS (SELECT LEVEL lvl
FROM dual
CONNECT BY LEVEL <= 1000)
SELECT sd.col1, -- replace with your column list that you want to insert into the table
ROWNUM pk -- replace with the sequence used to generate the pk, e.g.: pk_seq.nextval
FROM (SELECT 'abc' col1 FROM dual) sd -- replace with your 1 row selected from your table
CROSS JOIN dummy
CROSS JOIN dummy;
COL1 PK
---- ----------
abc 1
abc 2
abc 3
abc 4
...
所以你的insert语句看起来像:
insert into your_table (pk_col, col1, col2, col3, ...)
WITH dummy AS (SELECT LEVEL lvl
FROM dual
CONNECT BY LEVEL <= 1000)
SELECT your_table_pk_seq.nextval pk_col,
yt.col1,
yt.col2,
yt.col3,
...
FROM your_table yt
CROSS JOIN dummy
CROSS JOIN dummy;
这假设你有一个生成主键列值的序列,当然你有......对吗?
但这是一个奇怪的要求 - 除非您使用它来创建测试数据?在这种情况下,我希望您能够更改其他一些列以创建更真实的数据。