做到这一点会被占便宜的最简单方法select
语句的connect by
子句可根据需要生成尽可能多的合成行。
假设field1
到field3
是varchar2
数据类型和field4
是数字数据类型,因为数据的采样和insert
声明您提供暗示,那么你可以编写以下insert
声明
Insert into your_table_name(field1, field2, field3, field4)
select 'foo'
, 'bar' /* static string literals */
, 'baz'
, level /* starts at 1 and will be increased by 1 with each iteration */
from dual
connect by level <= 5 /* regulator of number of rows */
结果:
FIELD1 FIELD2 FIELD3 FIELD4
----------- ----------- ----------- ----------
foo bar baz 1
foo bar baz 2
foo bar baz 3
foo bar baz 4
foo bar baz 5
编辑:
如果你想真正看到value one
,value two
等作为fiedl4
列的值,你可以改变上述insert
声明如下:
Insert into your_table_name(field1, field2, field3, field4)
select 'foo'
, 'bar'
, 'baz'
, concat('value ', to_char(to_date(level, 'J'), 'jsp'))
from dual
connect by level <= 5
结果:
FIELD1 FIELD2 FIELD3 FIELD4
------ ------ ------ -------------
foo bar baz value one
foo bar baz value two
foo bar baz value three
foo bar baz value four
foo bar baz value five
如果你想用绝对随机生成的字符串文字填充field4
,你可以使用dbms_random
包和string()
函数:
Insert into your_table_name(field1, field2, field3, field4)
select 'foo'
, 'bar'
, 'baz'
, dbms_random.string('l', 7)
from dual
connect by level <= 5
结果:
FIELD1 FIELD2 FIELD3 FIELD4
------ ------ ------ --------
foo bar baz dbtcenz
foo bar baz njykkdy
foo bar baz bcvgabo
foo bar baz ghxcavn
foo bar baz solhgmm
“这是可行的还是我将不得不分别写入每个插页?” >后者:-) –
field4的值来自哪里?它是序列号还是别的? – Noel
添加到Ramblin的人的问题,如果你知道field4的所有值,你可以提供它们作为一个“表值函数”,改变你的'insert'使用'select'而不是'values'?并加入这些函数的值... – DrCopyPaste