分類: Oracle
忙了一天終於把sqlloader導出數據和導入數據弄清楚了,累死俺了。。。
這個總結主要分為三個大部分,
第一部分(實例,主要分兩步),第二部分(參數小總結),第三部分(完全參數總結)
第一部分
第一步 :這是我的導出數據的腳本call.sql
conn scott/tiger
set echo off
set term off
set line 1000 pages 0
set feedback off
set heading off
set trimspool on
spool / temp/test/ldr_test.csv
select a.empno||',"'||a.ename||'",'||to_char(a.hiredate,'yyyy-mm-dd hh24:mi:ss')||','||a.sal from test a;
spool off
set trimspool off
set heading on
set feedback on
set term on
set echo on
exit
注釋:call.sql腳本執行方法 (1)sqlplus /nolog 先進入sqlplus命令模式
(2)start call.sql 在sqlplus命令模式下執行
第二步 :導入數據的腳本add_test.ctl
LOAD DATA
INFILE ldr_test.csv
TRUNCATE INTO TABLE test
FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"'
(EMPNO,ENAME,HIREDATE date 'yyyy-mm-dd hh24:mi:ss',SAL)
注釋: 在第一步導出數據后,執行add_test.sql腳本命令為: sqlplus scott/tiger control=add_test.ctl
至此用sqlplus導入/出數據完成了,如果有些參數不明白,請看一下第二三部分。
哦..忘了說 test測試表的結構了,create table test as select empno,ename,hiredate,sal from emp;
第二部分
spool本身其實 沒有啥難的 ,就是set參數的個數太太多啦!!!下面就是我網上Copy的,當然有一些是自己加上去的
SQL>set colsep' '; //-域輸出分隔符
SQL>set newp none //設置查詢出來的數據分多少頁顯示,如果需要連續的數據,中間不要出現空行就把newp設置為none,這樣輸出的數據行都是連續的,中間沒有空行之類的
SQL>set echo off; //顯示start啟動的腳本中的每個sql命令,缺省為on
SQL> set echo on //設置運行命令是是否顯示語句
SQL> set feedback on; //設置顯示“已選擇XX行”
SQL>set feedback off; //回顯本次sql命令處理的記錄條數,缺省為on即去掉最后的 "已經選擇10000行"
SQL>set heading off; //輸出域標題,缺省為on 設置為off就去掉了select結果的字段名,只顯示數據
SQL>set headsep off //標題分隔符
SQL>set pagesize 0; //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。(可以簡寫為:set pages 0)
SQL>set linesize 80; //輸出一行字符個數,缺省為80。(可以簡寫為:set line 80)
SQL>set numwidth 12; //輸出number類型域長度,缺省為10
SQL>set termout/term off; //顯示腳本中的命令的執行結果,缺省為on
SQL>set trimout on; //去除標准輸出每行的拖尾空格,缺省為off
SQL>set trimspool on; //去除重定向( spool)輸出每行的拖尾空格,缺省為off
SQL>set serveroutput on; //設置允許顯示輸出類似dbms_output
SQL> set timing on; //設置顯示“已用時間:XXXX”
SQL> set autotrace on-; //設置允許對執行的sql進行分析
SQL>set verify off //可以關閉和打開提示確認信息old 1和new 1的顯示.
這個總結主要分為三個大部分,
第一部分(實例,主要分兩步),第二部分(參數小總結),第三部分(完全參數總結)
第一部分
第一步 :這是我的導出數據的腳本call.sql
conn scott/tiger
set echo off
set term off
set line 1000 pages 0
set feedback off
set heading off
set trimspool on
spool / temp/test/ldr_test.csv
select a.empno||',"'||a.ename||'",'||to_char(a.hiredate,'yyyy-mm-dd hh24:mi:ss')||','||a.sal from test a;
spool off
set trimspool off
set heading on
set feedback on
set term on
set echo on
exit
注釋:call.sql腳本執行方法 (1)sqlplus /nolog 先進入sqlplus命令模式
(2)start call.sql 在sqlplus命令模式下執行
第二步 :導入數據的腳本add_test.ctl
LOAD DATA
INFILE ldr_test.csv
TRUNCATE INTO TABLE test
FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"'
(EMPNO,ENAME,HIREDATE date 'yyyy-mm-dd hh24:mi:ss',SAL)
注釋: 在第一步導出數據后,執行add_test.sql腳本命令為: sqlplus scott/tiger control=add_test.ctl
至此用sqlplus導入/出數據完成了,如果有些參數不明白,請看一下第二三部分。
哦..忘了說 test測試表的結構了,create table test as select empno,ename,hiredate,sal from emp;
第二部分
spool本身其實 沒有啥難的 ,就是set參數的個數太太多啦!!!下面就是我網上Copy的,當然有一些是自己加上去的
SQL>set colsep' '; //-域輸出分隔符
SQL>set newp none //設置查詢出來的數據分多少頁顯示,如果需要連續的數據,中間不要出現空行就把newp設置為none,這樣輸出的數據行都是連續的,中間沒有空行之類的
SQL>set echo off; //顯示start啟動的腳本中的每個sql命令,缺省為on
SQL> set echo on //設置運行命令是是否顯示語句
SQL> set feedback on; //設置顯示“已選擇XX行”
SQL>set feedback off; //回顯本次sql命令處理的記錄條數,缺省為on即去掉最后的 "已經選擇10000行"
SQL>set heading off; //輸出域標題,缺省為on 設置為off就去掉了select結果的字段名,只顯示數據
SQL>set headsep off //標題分隔符
SQL>set pagesize 0; //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。(可以簡寫為:set pages 0)
SQL>set linesize 80; //輸出一行字符個數,缺省為80。(可以簡寫為:set line 80)
SQL>set numwidth 12; //輸出number類型域長度,缺省為10
SQL>set termout/term off; //顯示腳本中的命令的執行結果,缺省為on
SQL>set trimout on; //去除標准輸出每行的拖尾空格,缺省為off
SQL>set trimspool on; //去除重定向( spool)輸出每行的拖尾空格,缺省為off
SQL>set serveroutput on; //設置允許顯示輸出類似dbms_output
SQL> set timing on; //設置顯示“已用時間:XXXX”
SQL> set autotrace on-; //設置允許對執行的sql進行分析
SQL>set verify off //可以關閉和打開提示確認信息old 1和new 1的顯示.
