我想为Oracle 12c编写虚拟数据的PL / SQL生成器(例如,名称是第一个和最后一个最常用名称的组合)。
所以我需要首先用源数据填充表名和姓氏表。
我无法使用 sqlldr ,我有权访问的是 SQL * Plus 和 SQLDeveloper 。
我可以用许多单独的插入语句填充我的源表,如:
INSERT INTO names(id, name) VALUES(1, 'Oliver');
INSERT INTO names(id, name) VALUES(2, 'Jack');
⋮
INSERT INTO names(id, name) VALUES(50, 'Aaron');
我想知道是否还有其他(可能更优雅)的选择。
我遇到了另一个问题,即INSERT ALL
期间生成的标识列的值没有增加。这个related answer at SO中描述了一个很好的解决方法。
答案 0 :(得分:0)
您可以在oracle中执行此操作:
INSERT INTO names(id, name)
select 1, 'Oliver' from dual union all
select 2, 'Jack' from dual union all
. . .
然后有INSERT ALL:
INSERT ALL
INTO names (id, name) VALUES (1, 'Oliver')
INTO names (id, name) VALUES (2, 'Jack')
select * from dual;
我更喜欢第一个。
答案 1 :(得分:0)
您可能还想查看http://plsql.ninja/npg/package/random_ninja。 Morten Egan一直在构建一个非常有趣的实用程序库,他的random_ninja包将为您生成各种数据。