前言:
最近造数据,迁移至不同测试环境。由于没有建立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;
查询效果如下:
主要:分成几部分
将查询出来的语句进行保存:
本来想使用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