今天一個(gè)任務(wù)是從兩張表中用sql語句導(dǎo)出些數(shù)據(jù),并且提交這些數(shù)據(jù)的插入語句。上網(wǎng)查詢后找到個(gè)方法,例子如下:
spool c:\data.sql;
select 'insert into table_name values('''||field_1||''','''||field_2||''');'from table_name where field_n=some_conditon;
spool off;
從這個(gè)方案中引申學(xué)到兩條:spool命令和使用select語句批量拼裝sql語句
1. spool命令
1 Oracle的spool命令可以用來將數(shù)據(jù)export出來到文本文件。Oracle的Import/Export命令用于備份和恢復(fù)比較有效,但對(duì)于一些臨時(shí)數(shù)據(jù)量的導(dǎo)出,Export不好用,甚至不可用。在這里,就是spool的發(fā)揮之地了。
2Spool一般使用格式為spool [filepath]filename; 其他sql語句;spool off;
要輸出的內(nèi)容都在spool語句中包含;
3 spool還有些其他控制命令:
set pagesize 0 --設(shè)置頁面大小, 0表示無限制,如果設(shè)置為10,則10行數(shù)據(jù)后出現(xiàn)一空行
set num 18 --設(shè)置數(shù)字的長度,如果不夠大,則用科學(xué)記數(shù)法顯示
set heading off --設(shè)置不要題頭,則不出現(xiàn)select的field list
set feedback off --設(shè)置不需要返回信息, 比如" 100 rows selected“
set term off --
set trimspool on --trim
4 如果在sqlplus中直接使用sql語句,則導(dǎo)出的數(shù)據(jù)文件中會(huì)包含spool語句中使用的sql語句,如果不想讓生成這些可把要使用的sql語句存在一個(gè)文件中再在sqlplus中執(zhí)行此文件即可。
1. 使用select語句批量拼裝sql語句
仿照select 'insert into table_name values('''||field_1||''','''||field_2||''');'from table_name where field_n=some_conditon;可聯(lián)想批量生成其他sql語句,例如drop、update、delete語句。其中||為連接符號(hào),三個(gè)單引號(hào)最后生成一個(gè)單引號(hào)。