1.建表
2.建立ora.ctl
infile 『測試.txt』
replace into table test08
( id char terminated by 『,』,
usernmae char terminated by 『,』,
mobile char terminated by 『,』,
identified_card char terminated by 『,』,
address char terminated by whitespace
)3.把xls的excel 另存為csv,開啟csv,另存為utf-8的記事本檔案上傳到linux
4.執行語句
sqlldr userid=datawork/123@orclpdb control=ora.ctl log=./imptable/load.log
遇到的問題:
開啟的txt為亂碼,是windows的編碼格式為gbk,linux為utf-8,需要在windows上編碼為utf-8;或者inconv設定編碼
檢查ctl檔案和txt檔案的逗號是否為英文 「,」
檢查使用者的預設表空間是否為指定表空間,是否有使用權
查詢:select username,default_tablespace from dba_users where username=『datawork』;
格式:alter user datawork quota unlimited on users;
併發操作:
sqlldr userid=/ control=result1.ctl direct=true parallel=true
sqlldr userid=/ control=result2.ctl direct=true parallel=true
sqlldr userid=/ control=result2.ctl direct=true parallel=true
當載入大量資料時(大約超過10gb),抑制日誌的產生:
sql>alter table resultxt nologging;
這樣不產生redo log,可以提高效率。然後在control檔案中load data上面加一行:unrecoverable
此選項必須要與direct共同應用。
在併發操作時,oracle聲稱可以達到每小時處理100gb資料的能力!其實,估計能到1-10g就算不錯了,開始可用結構
相同的檔案,但只有少量資料,成功後開始載入大量資料,這樣可以避免時間的浪費。
參***
SQLLDR匯入亂碼問題的解決
處理過程 1 本地建立控制檔案 load data infile d tmp kaitoushuju.csv into table tmp kaitoushuju fields terminated by trade co,full name,customs code,co class,valid ...
SQLLDR匯入亂碼問題的解決
場景 業務部門要求匯入一批資料,是csv格式的,大家就想到了excel格式可以開啟,但悲劇的是該批資料超過10萬條,用excel處理顯然行不通,更悲劇的是開啟直接就是亂碼。於是筆者接了單子,籌畫用sqlldr進行匯入。話說7年前做野村 的batch系統時大量的使用了unix shell呼叫oracl...
sqlldr命令 將文字格式資料匯入到資料庫
第一步 寫乙個 ctl格式的控制檔案 load data 控制檔案標識 characterset utf8 格式統一utf8 infile u01 mbd dy channel.txt 要匯入的資料檔名 提前把這txt檔案放入目錄下 fields terminated by 外部檔案的資料以 分隔 ...