大龙的博客

常用链接

统计

最新评论

oracle----spool命令和使用select语句批量动态生成sql语句

今天一个任务是从两张表中用sql语句导出些数据,并且提交这些数据的插入语句。上网查询后找到个方法,例子如下: 
spool c:\data.sql; 
select 'insert into table_name values('''||field_1||''','''||field_2||''');'from table_name where field_n=some_conditon; 
spool off; 
从这个方案中引申学到两条:spool命令和使用select语句批量拼装sql语句 

   1. spool命令 

1 Oracle的spool命令可以用来将数据export出来到文本文件。Oracle的Import/Export命令用于备份和恢复比较有效,但对于一些临时数据量的导出,Export不好用,甚至不可用。在这里,就是spool的发挥之地了。 

2Spool一般使用格式为spool [filepath]filename;       其他sql语句;spool off; 

要输出的内容都在spool语句中包含; 

3 spool还有些其他控制命令: 

set pagesize 0               --设置页面大小, 0表示无限制,如果设置为10,则10行数据后出现一空行 
set num 18                  --设置数字的长度,如果不够大,则用科学记数法显示 
set heading off             --设置不要题头,则不出现select的field list 
set feedback off           --设置不需要返回信息, 比如" 100 rows selected“ 
set term off                 -- 
set trimspool on           --trim 

4 如果在sqlplus中直接使用sql语句,则导出的数据文件中会包含spool语句中使用的sql语句,如果不想让生成这些可把要使用的sql语句存在一个文件中再在sqlplus中执行此文件即可。 

   1. 使用select语句批量拼装sql语句 

仿照select 'insert into table_name values('''||field_1||''','''||field_2||''');'from table_name where field_n=some_conditon;可联想批量生成其他sql语句,例如drop、update、delete语句。其中||为连接符号,三个单引号最后生成一个单引号。

posted on 2011-10-17 17:47 大龙 阅读(2455) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理