前言:
最近造数据,迁移至不同测试环境。由于没有建立dblink的权限,所以想将查询出的语句直接转化成insert into语句。
步骤一:
将查询语句输出形式经行修改:
例如:
SELECT 'Insert into emp1 (DEPTNO,COMM,SAL,HIREDATE,MGR,JOB,ENAME,EMPNO) ' ||
'Values(' || '''' || DEPTNO || '''' || ',''' || COMM || '''' ||
',''' || SAL || '''' || ',''' || HIREDATE || '''' || ',''' || MGR || '''' ||
',''' || JOB || '''' || ',''' || ENAME || '''' || ',''' || EMPNO || '''' || ');'
FROM EMP1;
查询效果如下:
主要:分成几部分
) ' || 'Values('||''''||
||''''|| ',''' ||
|| ''''||');'
将查询出来的语句进行保存:
本来想使用dbms_file的但是依然是没有权限,所以使用了spool命令(保存命令窗口中的日志)算是一种曲线救国的方式吧!
格式类似于:
set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool 路径+文件名
select col1||','||col2||','||col3||','||col4||'..' from tablename;
spool off
其中涉及到输出格式的设置
spool详情参阅:
鸣谢:http://wallimn.iteye.com/blog/472182
备注:
1.脚本一定要在命令窗口下执行
2.在命令串口下执行,在每个表结束时会产生"**** rows selected"的语句,此句话会影响下一步在插入数据。所以在开头设置打印格式时添加
feedback off命令,来取消。
3.后来将其写成java程序,用到jdbc相关技术
详情:
http://www.cnblogs.com/bluedream2009/archive/2009/10/21/1587206.html

本文介绍了如何在Oracle数据库中将查询结果转换为INSERT INTO语句,以方便数据迁移。通过修改查询语句格式,结合使用spool命令保存查询结果到文件,避免了没有dblink权限的问题。在生成脚本时,需要注意设置输出格式,并在脚本开头添加`feedback off`以消除“rows selected”信息。此外,还提到了将该过程自动化,利用Java和JDBC技术实现。
970

被折叠的 条评论
为什么被折叠?



