今天一個任務是從兩張表中用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語句。其中||為連接符號,三個單引號最后生成一個單引號。