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