日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳細講解Oracle SQL*Loader的使用方法

瀏覽:25日期:2023-11-23 15:14:14

SQL*Loader是Oracle數據庫導入外部數據的一個工具.它和DB2的Load工具相似,但有更多的選擇,它支持變化的加載模式,可選的加載及多表加載.

如何使用 SQL*Loader 工具

我們可以用Oracle的sqlldr工具來導入數據。例如:

sqlldr scott/tiger control=loader.ctl

控制文件(loader.ctl) 將加載一個外部數據文件(含分隔符). loader.ctl如下:

load data

infile 'c:datamydata.csv'

into table emp

fields terminated by ',' optionally enclosed by '''

( empno, empname, sal, deptno )

mydata.csv 如下:

10001,'Scott Tiger', 1000, 40

10002,'Frank Naude', 500, 20

下面是一個指定記錄長度的示例控制文件。'*' 代表數據文件與此文件同名,即在后面使用BEGINDATA段來標識數據。

load data

infile *

replace

into table departments

( dept position (02:05) char(4),

deptname position (08:27) char(20)

)

begindata

COSC COMPUTER SCIENCE

ENGL ENGLISH LITERATURE

MATH MATHEMATICS

POLY POLITICAL SCIENCE

Unloader這樣的工具

Oracle 沒有提供將數據導出到一個文件的工具。但是,我們可以用SQL*Plus的select 及 format 數據來輸出到一個文件:

set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on

spool oradata.txt

select col1 || ',' || col2 || ',' || col3

from tab1

where col2 = 'XYZ';

spool off

另外,也可以使用使用 UTL_FILE PL/SQL 包處理:

rem Remember to update initSID.ora, utl_file_dir='c:oradata' parameter

declare

fp utl_file.file_type;

begin

fp := utl_file.fopen('c:oradata','tab1.txt','w');

utl_file.putf(fp, '%s, %sn', 'TextField', 55);

utl_file.fclose(fp);

end;

/

當然你也可以使用第三方工具,如SQLWays ,TOAD for Quest等。

加載可變長度或指定長度的記錄

如:

LOAD DATA

INFILE *

INTO TABLE load_delimited_data

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '''

TRAILING NULLCOLS

( data1,

data2

)

BEGINDATA

11111,AAAAAAAAAA

22222,'A,B,C,D,'

下面是導入固定位置(固定長度)數據示例:

LOAD DATA

INFILE *

INTO TABLE load_positional_data

( data1 POSITION(1:5),

data2 POSITION(6:15)

)

BEGINDATA

11111AAAAAAAAAA

22222BBBBBBBBBB

跳過數據行:

可以用 'SKIP n' 關鍵字來指定導入時可以跳過多少行數據。如:

LOAD DATA

INFILE *

INTO TABLE load_positional_data

SKIP 5

( data1 POSITION(1:5),

data2 POSITION(6:15)

)

BEGINDATA

11111AAAAAAAAAA

22222BBBBBBBBBB

導入數據時修改數據:

在導入數據到數據庫時,可以修改數據。注意,這僅適合于常規導入,并不適合 direct導入方式.如:

LOAD DATA

INFILE *

INTO TABLE modified_data

( rec_no 'my_db_sequence.nextval',

region CONSTANT '31',

time_loaded 'to_char(SYSDATE, 'HH24:MI')',

data1 POSITION(1:5) ':data1/100',

data2 POSITION(6:15) 'upper(:data2)',

data3 POSITION(16:22)'to_date(:data3, 'YYMMDD')'

)

BEGINDATA

11111AAAAAAAAAA991201

22222BBBBBBBBBB990112

LOAD DATA

INFILE 'mail_orders.txt'

BADFILE 'bad_orders.txt'

APPEND

INTO TABLE mailing_list

FIELDS TERMINATED BY ','

( addr,

city,

state,

zipcode,

mailing_addr 'decode(:mailing_addr, null, :addr, :mailing_addr)',

mailing_city 'decode(:mailing_city, null, :city, :mailing_city)',

mailing_state

)

將數據導入多個表:

如:

LOAD DATA

INFILE *

REPLACE

INTO TABLE emp

WHEN empno != ' '

( empno POSITION(1:4) INTEGER EXTERNAL,

ename POSITION(6:15) CHAR,

deptno POSITION(17:18) CHAR,

mgr POSITION(20:23) INTEGER EXTERNAL

)

INTO TABLE proj

WHEN projno != ' '

( projno POSITION(25:27) INTEGER EXTERNAL,

empno POSITION(1:4) INTEGER EXTERNAL

)

導入選定的記錄:

如下例: (01) 代表第一個字符, (30:37) 代表30到37之間的字符:

LOAD DATA

INFILE 'mydata.dat' BADFILE 'mydata.bad' DISCARDFILE 'mydata.dis'

APPEND

INTO TABLE my_selective_table

WHEN (01) <> 'H' and (01) <> 'T' and (30:37) = '19991217'

(

region CONSTANT '31',

service_key POSITION(01:11) INTEGER EXTERNAL,

call_b_no POSITION(12:29) CHAR

)

導入時跳過某些字段:

可用 POSTION(x:y) 來分隔數據. 在Oracle8i中可以通過指定 FILLER 字段實現。FILLER 字段用來跳過、忽略導入數據文件中的字段.如:

LOAD DATA

TRUNCATE INTO TABLE T1

FIELDS TERMINATED BY ','

( field1,

field2 FILLER,

field3

)

導入多行記錄:

可以使用下面兩個選項之一來實現將多行數據導入為一個記錄:

CONCATENATE: - use when SQL*Loader should combine the same number of physical records together to form one logical record.

CONTINUEIF - use if a condition indicates that multiple records should be treated as one. Eg. by having a '#' character in column 1.

SQL*Loader 數據的提交:

一般情況下是在導入數據文件數據后提交的。

也可以通過指定 ROWS= 參數來指定每次提交記錄數。

提高 SQL*Loader 的性能:

1) 一個簡單而容易忽略的問題是,沒有對導入的表使用任何索引和/或約束(主鍵)。如果這樣做,甚至在使用ROWS=參數時,會很明顯降低數據庫導入性能。

2) 可以添加 DIRECT=TRUE來提高導入數據的性能。當然,在很多情況下,不能使用此參數。

3) 通過指定 UNRECOVERABLE選項,可以關閉數據庫的日志。這個選項只能和 direct 一起使用。

4) 可以同時運行多個導入任務.

常規導入與direct導入方式的區別:

常規導入可以通過使用 INSERT語句來導入數據。Direct導入可以跳過數據庫的相關邏輯(DIRECT=TRUE),而直接將數據導入到數據文件中。

導入數據時修改數據:

在導入數據到數據庫時,可以修改數據。注意,這僅適合于常規導入,并不適合 direct導入方式.如:

LOAD DATA

INFILE *

INTO TABLE modified_data

( rec_no 'my_db_sequence.nextval',

region CONSTANT '31',

time_loaded 'to_char(SYSDATE, 'HH24:MI')',

data1 POSITION(1:5) ':data1/100',

data2 POSITION(6:15) 'upper(:data2)',

data3 POSITION(16:22)'to_date(:data3, 'YYMMDD')'

)

BEGINDATA

11111AAAAAAAAAA991201

22222BBBBBBBBBB990112

LOAD DATA

INFILE 'mail_orders.txt'

BADFILE 'bad_orders.txt'

APPEND

INTO TABLE mailing_list

FIELDS TERMINATED BY ','

( addr,

city,

state,

zipcode,

mailing_addr 'decode(:mailing_addr, null, :addr, :mailing_addr)',

mailing_city 'decode(:mailing_city, null, :city, :mailing_city)',

mailing_state

)

將數據導入多個表:

如:

LOAD DATA

INFILE *

REPLACE

INTO TABLE emp

WHEN empno != ' '

( empno POSITION(1:4) INTEGER EXTERNAL,

ename POSITION(6:15) CHAR,

deptno POSITION(17:18) CHAR,

mgr POSITION(20:23) INTEGER EXTERNAL

)

INTO TABLE proj

WHEN projno != ' '

( projno POSITION(25:27) INTEGER EXTERNAL,

empno POSITION(1:4) INTEGER EXTERNAL

)

導入選定的記錄:

如下例: (01) 代表第一個字符, (30:37) 代表30到37之間的字符:

LOAD DATA

INFILE 'mydata.dat' BADFILE 'mydata.bad' DISCARDFILE 'mydata.dis'

APPEND

INTO TABLE my_selective_table

WHEN (01) <> 'H' and (01) <> 'T' and (30:37) = '19991217'

(

region CONSTANT '31',

service_key POSITION(01:11) INTEGER EXTERNAL,

call_b_no POSITION(12:29) CHAR

)

導入時跳過某些字段:

可用 POSTION(x:y) 來分隔數據. 在Oracle8i中可以通過指定 FILLER 字段實現。FILLER 字段用來跳過、忽略導入數據文件中的字段.如:

LOAD DATA

TRUNCATE INTO TABLE T1

FIELDS TERMINATED BY ','

( field1,

field2 FILLER,

field3

)

導入多行記錄:

可以使用下面兩個選項之一來實現將多行數據導入為一個記錄:

CONCATENATE: - use when SQL*Loader should combine the same number of physical records together to form one logical record.

CONTINUEIF - use if a condition indicates that multiple records should be treated as one. Eg. by having a '#' character in column 1.

SQL*Loader 數據的提交:

一般情況下是在導入數據文件數據后提交的。

也可以通過指定 ROWS= 參數來指定每次提交記錄數。

提高 SQL*Loader 的性能:

1) 一個簡單而容易忽略的問題是,沒有對導入的表使用任何索引和/或約束(主鍵)。如果這樣做,甚至在使用ROWS=參數時,會很明顯降低數據庫導入性能。

2) 可以添加 DIRECT=TRUE來提高導入數據的性能。當然,在很多情況下,不能使用此參數。

3) 通過指定 UNRECOVERABLE選項,可以關閉數據庫的日志。這個選項只能和 direct 一起使用。

4) 可以同時運行多個導入任務.

常規導入與direct導入方式的區別:

常規導入可以通過使用 INSERT語句來導入數據。Direct導入可以跳過數據庫的相關邏輯(DIRECT=TRUE),而直接將數據導入到數據文件中。

sqlldr使用例子說明

先把Excel另存為.csv格式文件,如test.csv,再編寫一個insert.ctl

用sqlldr進行導入!

insert.ctl內容如下:

load data --1、控制文件標識

infile 'test.csv' --2、要輸入的數據文件名為test.csv

append into table table_name --3、向表table_name中追加記錄

fields terminated by ',' --4、字段終止于',',是一個逗號

(field1,

field2,

field3,

...

fieldn)-----定義列對應順序

注意括號中field排列順序要與csv文件中相對應

然后就可以執行如下命令:

sqlldr user/password control=insert.ctl

標簽: Oracle 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合激情五月婷婷| 久久精品国产福利| 成人三级高清视频在线看| 国产伦精品一区二区三区视频 | 激情综合网址| 久久高清精品| 国产99精品| 亚洲福利国产| 欧洲激情综合| 一本色道精品久久一区二区三区| 亚洲精品888| 丝袜a∨在线一区二区三区不卡| 99视频+国产日韩欧美| 亚州av乱码久久精品蜜桃| 免费国产自久久久久三四区久久| 日本免费一区二区三区四区| 日韩一区二区三区免费播放| 色天使综合视频| 欧美色图国产精品| 亚洲欧美日韩视频二区| 综合激情在线| 日本午夜精品一区二区三区电影| 国产毛片一区二区三区| 九九99久久精品在免费线bt| 日韩欧美网址| 香蕉精品999视频一区二区| 日韩欧美高清一区二区三区| 国产精品v一区二区三区| 欧美丰满日韩| 日韩亚洲在线| 亚洲三级观看| 国产精品欧美三级在线观看| 国产精品久久久久蜜臀 | 日本精品不卡| 1024精品久久久久久久久| 亚洲专区视频| 国产精品jk白丝蜜臀av小说| 日韩免费看片| 蜜臀久久99精品久久久久宅男 | 在线日韩一区| 亚州国产精品| 国产精品任我爽爆在线播放| 韩国久久久久久| 亚洲欧美激情诱惑| 久久国产欧美日韩精品| 亚洲欧洲高清| 日av在线不卡| 精品网站999| 今天的高清视频免费播放成人| 深夜福利一区| 成午夜精品一区二区三区软件| 欧美在线影院| 国产精品亚洲一区二区在线观看| 91tv亚洲精品香蕉国产一区| 蜜桃一区二区三区在线观看| 麻豆精品久久久| 群体交乱之放荡娇妻一区二区| 老司机精品久久| 国产一区二区三区不卡av| 国产美女精品| 精品99在线| 日韩中文字幕麻豆| 精品美女在线视频| 国产免费成人| 国产在线观看91一区二区三区| 亚洲免费观看| 精品三区视频| 一区二区国产在线观看| 麻豆一区二区三| 亚洲欧美日韩一区在线观看| 韩日一区二区| 久久亚洲二区| a日韩av网址| 欧美有码在线| 欧美日韩国产在线一区| 国产毛片久久久| 丝袜国产日韩另类美女| 日韩欧美二区| 国产精品亚洲成在人线| 午夜亚洲福利在线老司机| 国产在线观看91一区二区三区| 日本大胆欧美人术艺术动态| 久久久久99| 麻豆视频一区二区| 亚洲日韩视频| 欧美不卡视频| 久久尤物视频| 日韩三级久久| 红桃视频亚洲| 日韩毛片在线| 国产中文欧美日韩在线| 欧美日韩亚洲国产精品| 男女男精品视频网| 国产在线不卡| sm捆绑调教国产免费网站在线观看 | 国产高清亚洲| 亚洲三级精品| 99久久亚洲精品| 黄色精品视频| 国产精品一区二区美女视频免费看 | 欧美日韩亚洲三区| 男人的天堂久久精品| 午夜国产一区二区| 不卡一二三区| 国产在线一区不卡| 国产精品极品| 欧美日韩精品一区二区三区视频| 鲁大师成人一区二区三区| 成人日韩在线| 成人精品久久| 卡一精品卡二卡三网站乱码| 日韩av不卡在线观看| 蜜桃视频在线观看一区二区| 夜夜嗨网站十八久久| av亚洲在线观看| 久久理论电影| 欧美日韩一二| 久久婷婷激情| 日韩在线精品| 日韩国产在线| 日韩国产一区二区三区| 特黄毛片在线观看| 国产精品福利在线观看播放| 美女久久精品| 国产高清亚洲| 精品久久久久久久| 国内精品伊人| 一本大道色婷婷在线| 在线观看精品| 99久久久久| 不卡av一区二区| 欧美精品九九| 中文不卡在线| 日本欧美一区二区在线观看| 久久精品 人人爱| 国产精品videossex久久发布| 国产精品第一| 福利欧美精品在线| 日韩中文在线电影| 久久人人精品| 日韩亚洲国产欧美| 蜜臀精品一区二区三区在线观看 | 国产精品夜夜夜| 久久精品国产999大香线蕉| 捆绑调教美女网站视频一区| 国产一区二区三区四区五区 | 久久中文精品| 日韩免费在线| 午夜国产精品视频| 亚洲一区二区日韩| 日本午夜精品久久久| 美女国产精品久久久| 国产h片在线观看| 亚洲一级网站| 免费在线欧美视频| 国产日产精品_国产精品毛片| 欧美精品99| 日韩国产一区二区三区| 久久久精品五月天| 蜜臀精品一区二区三区在线观看| 久久精品 人人爱| 91综合视频| 午夜精品婷婷| 欧美日韩亚洲一区三区| 欧美www视频在线观看| 蜜臀av免费一区二区三区| 亚洲精品亚洲人成在线观看| 国产乱码精品一区二区三区亚洲人 | 精品国产三区在线| 蜜桃视频欧美| 亚洲精品伊人| 国产精品丝袜在线播放| 免费一二一二在线视频| 91久久中文| 欧美日韩一区二区高清| 亚洲一级少妇| 蜜桃视频一区二区| 国产福利资源一区| 欧美精品九九| 国产精品1区在线| 欧美不卡在线| 国产精品九九| 黄页网站一区| 久久福利在线| 最新亚洲激情| 国产欧美一区二区三区精品观看| 成人日韩在线| 日韩av一区二区在线影视| 日本不良网站在线观看| 免费日韩视频| 精品午夜视频| 免费人成黄页网站在线一区二区| 美女视频网站久久| 日韩午夜av在线| 欧美精品二区| 亚洲综合福利| 日韩电影免费在线观看| 欧美日韩18| 国产亚洲午夜| 高清一区二区三区|