sqluldr2支持mysql吗_sqluldr2工具使用方法
Oracle數(shù)據(jù)導(dǎo)出工具sqluldr2可以將數(shù)據(jù)以csv、txt等文件格式導(dǎo)出,適用于大批量數(shù)據(jù)的導(dǎo)出,導(dǎo)出速度非常快,導(dǎo)出后可以使用Oracle SQL Loader工具將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中。下面將介紹Sqluldr2和sqlldr在Windows平臺(tái)下的數(shù)據(jù)處理過(guò)程。
一、軟件下載地址
下載完sqluldr解壓后,文件夾內(nèi)容如下:
sqluldr2.exe
用于32位windows平臺(tái);
sqluldr2_linux32_10204.bin
適用于linux32位操作系統(tǒng);
sqluldr2_linux64_10204.bin
適用于linux64位操作系統(tǒng);
sqluldr264.exe
用于64位windows平臺(tái)。
文件內(nèi)容如下圖所示:
二、sqluldr2 使用方法
1、首先將sqluldr2.exe復(fù)制到執(zhí)行目錄下,即可開(kāi)始使用
2、查看help 幫助
3、執(zhí)行數(shù)據(jù)導(dǎo)出命令
3.1、常規(guī)導(dǎo)出
sqluldr2
test
/
test
@127.0.1.1/orcl query="select * from temp_001" head=yes file=d:/tmp001.csv
說(shuō)明:head=yes
表示輸出表頭
3.2、使用sql參數(shù)
sqluldr2 test/test@127.0.1.1/orcl sql=test_sql.sql head=yes file=d:/tmp001.csv
test_sql的內(nèi)容為:
select * from temp_001
3.3、使用log參數(shù)
當(dāng)集成sqluldr2在腳本中時(shí),就希望屏蔽上不輸出這些信息,但又希望這些信息能保留,這時(shí)可以用“LOG”選項(xiàng)來(lái)指定日志文件名。
sqluldr2?test/test@127.0.1.1/orcl sql=test_sql.sql head=yes file=d:/tmp001.csv log=+d:/tmp001.log
3.4、使用 table 參數(shù)
當(dāng)使用 table 參數(shù)時(shí),在目錄下會(huì)生成對(duì)應(yīng)的ctl控制文件,如下語(yǔ)句會(huì)生成temp_001_sqlldr.ctl文件。
sqluldr2?test/test@127.0.1.1/orcl query="select * from temp_001" table=temp_001 head=yes file=d:/tmp001.csv
生成的控制文件
temp_001_sqlldr.ctl的內(nèi)容如下:
4、主要參數(shù)說(shuō)明
Field
分隔符
指定字段分隔符,默認(rèn)為逗號(hào)
record 分隔符
指定記錄分隔符,默認(rèn)為回車換行,Windows下的換行
quote
引號(hào)符
指定非數(shù)字字段前后的引號(hào)符
例如現(xiàn)在要改變默認(rèn)的字段分隔符,用“#”來(lái)分隔記錄,導(dǎo)出的命令如下所示:
sqluldr2
test/test sql=tmp.sql field=#
在指定分隔符時(shí),可以用字符的ASCII代碼(0xXX,大寫的XX為16進(jìn)制的ASCII碼值)來(lái)指定一個(gè)字符,常用的字符的ASCII代碼如下:
回車=0x0d,換行=0x0a,TAB鍵=0x09,|=0x7c,&=0x26,雙引號(hào)=0x22,單引號(hào)=0x27
在選擇分隔符時(shí),一定不能選擇會(huì)在字段值中出現(xiàn)的字符組合,如常見(jiàn)的單詞等,很多次導(dǎo)入時(shí)報(bào)錯(cuò),回過(guò)頭來(lái)找原因時(shí),都發(fā)現(xiàn)是因?yàn)榉指舴霈F(xiàn)在字段值中了。
三、sqlldr 使用方法
sqlldr工具可以將文本數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)表中,
1、查看sqlldr 的幫助文檔
2、創(chuàng)建測(cè)試文件
在D盤根目錄下創(chuàng)建測(cè)試文件tmp_insert.txt ,其內(nèi)容如下:
PROD_ID,ACC_NUM
18283918,18762535162
12361527,18482762831
3、創(chuàng)建控制文件tmp_insert01.ctl
內(nèi)容如下:
options(direct=true,errors=10000000,skip=1)
load data
characterset zhs16gbk
into table temp_001?truncate
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
prod_id ?"trim(:prod_id)",
acc_num "trim(:acc_num)"
)
參數(shù)說(shuō)明:
characterset :字符集, 一般使用字符集 AL32UTF8,如果出現(xiàn)中文字符集亂碼時(shí),改成
ZHS16GBK。
fields terminated by 'string':文本列分隔符。當(dāng)為tab鍵時(shí),改成'/t',或者 X'09';空格分隔符 whitespace
,換行分隔符 '/n' 或者 X'0A';回車分隔符 '/r' 或者 X'0D';默認(rèn)為'/t'。
optionally enclosed by 'char':字段包括符。當(dāng)為 ' ' 時(shí),不把字段包括在任何引號(hào)符號(hào)中;當(dāng)為 "'" 時(shí),字段包括在單引號(hào)中;當(dāng)為'"'時(shí),字段在包括雙引號(hào)中;默認(rèn)不使用引用符。
fields escaped by 'char':轉(zhuǎn)義字符,默認(rèn)為'/'。
trailing nullcols:表字段沒(méi)有對(duì)應(yīng)的值時(shí),允許為空。
insert:為缺省方式,在數(shù)據(jù)裝載開(kāi)始時(shí)要求表為空;
append:在表中追加新記錄
;
replace:刪除舊記錄,替換成新裝載的記錄 ;
truncate:先清空表,再添加記錄;
skip=1 :表示插入數(shù)據(jù)時(shí),跳過(guò)第一行(標(biāo)題),從第二行開(kāi)始導(dǎo)入;
4、執(zhí)行數(shù)據(jù)導(dǎo)入處理
sqlldr
test/
test@127.0.1.1/orcl data=d:/tmp_insert.txt control=d:/tmp_insert01.ctl log=d:/tmp_insert01.log bad=d:/tmp_insert01.bad
注意:在數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)表后,查詢表數(shù)據(jù)時(shí),會(huì)發(fā)現(xiàn)最后一個(gè)字段的數(shù)據(jù)中含有類似空格的字符,其實(shí)不是空格,是回車換行符,通過(guò)replace函數(shù)將其替換掉即可,如下紅色部分處理
options(direct=true,errors=10000000,skip=1)
load data
characterset zhs16gbk
into table temp_001 truncate
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
prod_id ?char(32) ?"trim(:prod_id)",
acc_num
char(20)
"replace(:acc_num,chr(13),'')"
)
5、sqlldr中支持定義的數(shù)據(jù)類型
可以定義14種數(shù)據(jù)類型:
CHAR
DATE
DECIMAL EXTERNAL
DECIMAL
DOUBLE
FLOAT
FLOAT EXTERNAL
GRAPHIC EXTERNAL
INTEGER
INTEGER EXTERNAL
SMALLINT
VARCHAR
VARGRAPHIC
a、字符類型數(shù)據(jù)
CHAR[ (length)] [delimiter]
length缺省為 1,ctl文件中char(20) 一般對(duì)應(yīng)數(shù)據(jù)庫(kù)表中 varchar2(20) 。
b、日期類型數(shù)據(jù)
DATE [ ( length)]['date_format' [delimiter]
使用to_date函數(shù)來(lái)限制
ctl文件中 date "yyyy-mm-dd hh24:mi:ss" 對(duì)應(yīng)數(shù)據(jù)庫(kù)表中 date
c、字符格式中的十進(jìn)制
DECIMAL EXTERNAL [(length)] [delimiter]
用于常規(guī)格式的十進(jìn)制數(shù)(不是二進(jìn)制=> 一個(gè)位等于一個(gè)bit)
ctl文件中 decimal external 對(duì)應(yīng) 數(shù)據(jù)庫(kù)表中 number
d、壓縮十進(jìn)制格式數(shù)據(jù)
DECIMAL (digtial [,precision])
ctl文件中 decimal對(duì)應(yīng) 數(shù)據(jù)庫(kù)表中 number
e、雙精度符點(diǎn)二進(jìn)制
DOUBLE
f、普通符點(diǎn)二進(jìn)制
FLOAT
g、字符格式符點(diǎn)數(shù)
FLOAT EXTERNAL [ (length) ] [delimiter]
h、雙字節(jié)字符串?dāng)?shù)據(jù)
GRAPHIC [ (legth)]
i、雙字節(jié)字符串?dāng)?shù)據(jù)
GRAPHIC EXTERNAL[ (legth)]
j、常規(guī)全字二進(jìn)制整數(shù)
INTEGER
ctl文件中的integer 對(duì)應(yīng)數(shù)據(jù)庫(kù)表中 integer
k、字符格式整數(shù)
INTEGER EXTERNAL
l、常規(guī)全字二進(jìn)制數(shù)據(jù)
SMALLINT
m、可變長(zhǎng)度字符串
VARCHAR
ctl文件中varchar 對(duì)應(yīng) 數(shù)據(jù)庫(kù)表中 varchar2
n、可變雙字節(jié)字符串?dāng)?shù)據(jù)
VARGRAPHIC
6、常見(jiàn)錯(cuò)誤示例
SQL*Loader-601: For INSERT option, table must be empty.
這時(shí)需要,更改為追加(append)方式加載數(shù)據(jù)。
創(chuàng)建控制文件tmp_insert01.ctl,內(nèi)容如下:
OPTIONS(DIRECT=TRUE,ERRORS=10000000,skip=1)
LOAD DATA
--INFILE 'd:/tmp_insert.txt'
CHARACTERSET AL32UTF8
APPEND INTO TABLE TEMP_001
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
PROD_ID
"TRIM(:PROD_ID)",
ACC_NUM
"TRIM(:ACC_NUM)"
)
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
https://www.cndba.cn/cndba/tianxiadishi/article/2064
工具
總結(jié)
以上是生活随笔為你收集整理的sqluldr2支持mysql吗_sqluldr2工具使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《高效程序员的45个习惯》-之二
- 下一篇: Linux 普通用户拿到root权限及使