昨天看了一下oracle中數據的導入方法,在oracle中數據導入方法主要有以下幾種:
1,直接用insert ......values()語句;
example:
insert into book(no,name,type) values('2006001','basketball park','magazine')
2,use select query sentence;
example:
insert into book_1 select * from book2 where book1='condition'
3,use PL/SQL procedure;
example:
SQL>edit input_example.sql
-----------input prompt
accept p_no prompt 'please input book no'
accept p_name prompt 'please input book name'
accept p_type prompt 'please input the type of book'
------------evaluation
declare
v_no book.no%type:=&p_no;
v_name book.name%type:=&p_name;
v_type book.type%type:=&P_type;
-------------insert
begin
insert book(no,name,type)
values(v_no,v_name,v_type);
commit work;
end;
/
4,使用 Oracle Loader插入記錄
這裡重點講一下Oracle Loader的使用,很多時候我們會使用Oracle Loader進入資料的導入工作。像在工廠裡我們要把別的機器或是人為的資料檔導入Oracle通常我們會使用Oracle Loader.
再一說來,oracle loader其實也是一個較為自動的導入工具。
一,比如現在別人給我們圖書館1000本書,並用e-mail給了我們一個清單。
清單是用一個*.txt,內容如下:
#bookname,bookno,bookqty,booktype,intime,price
#書名,書號,書的數量,書的類型,加入時間,價格
C語言程序設計,001,13,課本,20060521,20.45
oracle學習與提高,002,15,課外書,20060522,45
...........
...........
...........
如果這個清單有十幾條,我們完全可以用手工insert但是如果是一千條那我們用手工就太慢了,而且容易出錯,這時我們就可以使用oracle Loader.
二,sql loader 的例子
c:\sqlldr userid=bookadm1/sysadm control=input.ctl log=input.log bad=input.bad errors=30 skip=1 direct=true
sqlldr是 oracle loader的命令,後面跟的是參數,參數控制著具體的導入方法,參數解釋如下:
userid=bookadm1/sysadm --username='bookadm',password='sysadm'
control=input.ctl --control file name input.ctl
log=input.log --log file name input.log
bad=input.bad --when input error to take down error record
errors=30 --permit error rows
skip=1 --skip rows
direct=true --use direct directory
其中input.ctl是控制著輸入數據文件的格式。
-- this is the control file
load data ----關鍵字,指出這是一個控制文件。
infile 'd:\book\200605.txt' ---要導入的文件的位置及文件名
append(insert,replace) into table book --向BOOK的表中追加(append)(插入一個空表(insert),替換一個表(replace原表內容將被刪除))
fields terminated by ',' --兩個字段間的分隔符
(bookname char,
bookno number,
bookqty number,
booktype char,
intime date 'yyyymmdd'
price number(6,2)
) --定義列對應的順序
阅读(1955) | 评论(0) | 转发(0) |