我有大约10个表,我从select和join语句中选择。我得到了select语句的工作,但想要生成更多的数据以确保它真的有效。Oracle生成插入语句
是否有一种简单的方法来生成虚拟数据而无需手动执行。那就是如果从表中选择a.id = b.id
上的连接表b。我怎样才能生成满足这个要求的数据,而无需手动执行?如果这没有意义,我可以更清楚地说明。谢谢!!
我有大约10个表,我从select和join语句中选择。我得到了select语句的工作,但想要生成更多的数据以确保它真的有效。Oracle生成插入语句
是否有一种简单的方法来生成虚拟数据而无需手动执行。那就是如果从表中选择a.id = b.id
上的连接表b。我怎样才能生成满足这个要求的数据,而无需手动执行?如果这没有意义,我可以更清楚地说明。谢谢!!
简单的例子使用LEVEL插入10行 - 运行内部查询看到的结果:
INSERT INTO emp_test(empno)
(
SELECT 1+LEVEL-1 FROM dual
CONNECT BY LEVEL <= 10
)
/
相关表(你需要连接和参照完整性的工作。)你必须写一个pl/sql块或一组插入。
PL/SQL:--see下面来看看如何生成多行...
Begin
for v_rec in (select level from dual
connect by level <= 1000)
loop
create_new_dept (v_rec.level);
create_1000_rows_for_dept(v_rec.level);
end loop;
end;
/
或SQL:
--create 1000 departments.
insert into dept(deptno, dname)
select level, 'deptno ' || level
from dual
connect by level <= 1000;
commit;
--create 1000 employees for each department..
with emp as
(select level empid
from dual
connect by level <=1000
)
insert into emp(empno, deptno, dname)
select deptno,
emp_seq.nextval,
'dname ' || 'emp ' || level empname
from dept,
emp; --no join condition, cartesian join on purpose
commit;
有两种常见的方法当表是彼此不相关。
使用DBMS_RANDOM,通过查询连接并生成多行。示例...
--This will insert 1000 rows {(1, emp1), (2,emp2)} and so on..
insert into emp (empno, ename)
select level, 'employee ' || level
from emp
connect by level <=1000;
使用类似dba_objects的表并执行多个插入来生成数据。如果你想测试一个像“基于函数的索引的性能”那样的情况,这非常有用),并且只要存在很多数据,并不关心它是什么数据。
create table my_test_table
as
select * from dba_objects; --or user_objects, all_objects
--keep doubling rows until you have enough rows.
insert into my_test_table
select * from my_test_table;
commit;
是的,使它更清楚。您可以使用DBMS_RANDOM或使用LEVEL/ROWNUM生成行,这涉及到手动编写查询的工作。 – Art
确定这里是和示例查询。从person.classId = class.id中的人员加入类中选择姓名,姓氏,Dob;现在,我得到这个查询返回数据的唯一方法是如果person.classId在类表中,并有ids匹配。我希望生成插入语句,类似insert(person,lastName,Dob,classId)values('test','temp','remove',sysdate,44),并在类表中插入类(id)值(44)。因此,类ID为44的人将在查询中返回。这只是一个例子,我真正的表格大约有10列,其中包含大约10个表格 – Mohamed
要真正帮助您更详细地描述您的问题/数据库,那将是十分必要的。 一般认为使用DBOSS_RANDOM或INSERT语句和子选择,使用CROSS JOINS。 – Viehzeug