使用sqlldr匯入文字資料到oracle
1.sqlldr介紹
用法:
SQLLDR keyword=value [,keyword=value,...]
有效的關鍵字:
userid
-- ORACLE 使用者名稱/口令
control
-- 控制檔名
log
-- 日誌檔名
bad
-- 錯誤檔名
data
-- 資料檔名
discard
-- 廢棄檔名
discardmax
-- 允許廢棄的檔案的數目 (全部預設)
skip
-- 要跳過的邏輯記錄的數目 (預設 0)
load
-- 要載入的邏輯記錄的數目 (全部預設)
errors
-- 允許的錯誤的數目 (預設 50)
rows
-- 常規路徑繫結陣列中或直接路徑儲存資料間的行數
(預設:
常規路徑 64, 所有直接路徑)
bindsize
-- 常規路徑繫結陣列的大小 (以位元組計) (預設 256000)
silent
-- 執行過程中隱藏訊息 (標題,反饋,錯誤,廢棄,分割槽)
direct
-- 使用直接路徑 (預設 FALSE)
parfile
-- 引數檔案: 包含引數說明的檔案的名稱
parallel
-- 執行並行載入 (預設 FALSE)
file
-- 要從以下物件中分配區的檔案
skip_unusable_indexes
-- 不允許/允許使用無用的索引或索引分割槽 (預設 FALSE)
skip_index_maintenance
-- 沒有維護索引, 將受到影響的索引標記為無用 (預設 FALSE)
commit_discontinued
-- 提交載入中斷時已載入的行 (預設 FALSE)
readsize
-- 讀取緩衝區的大小 (預設 1048576)
external_table
-- 使用外部表進行載入; NOT_USED, GENERATE_ONLY, EXECUTE (預設 NOT_USED)
columnarrayrows
-- 直接路徑列陣列的行數 (預設 5000)
streamsize
-- 直接路徑流緩衝區的大小 (以位元組計) (預設 256000)
multithreading
-- 在直接路徑中使用多執行緒
resumable
-- 啟用或禁用當前的可恢復會話 (預設 FALSE)
resumable_name
-- 有助於標識可恢復語句的文字字串
resumable_timeout
-- RESUMABLE 的等待時間 (以秒計) (預設 7200)
date_cache
-- 日期轉換快取記憶體的大小 (以條目計) (預設 1000)
no_index_errors
-- 出現任何索引錯誤時中止載入 (預設 FALSE)
PLEASE
NOTE: 命令列引數可以由位置或關鍵字指定
。前者的例子是
'sqlldr
scott/tiger
foo
';
後一種情況的一個示例是 '
sqlldr
control=foo
userid=scott/tiger'。位置指定引數的時間必須早於
但不可遲於由關鍵字指定的引數。例如,
允許
'sqlldr
scott/tiger control=foo logfile=log'
,
但是
不允許
'sqlldr
scott/tiger control=foo log'
,
即使
引數
'log'
的位置正確。
2.實戰
先有需求:
將000000_0.txt檔案匯入oracle資料庫
000000_0.txt大小:123MB,幾十萬行
000000_0.txt內容格式:
20160514|未知|未知|未知|3G|057431041116|55349|41116|28173301261774|460007863660008|1.224609375|13.0|\N|\N
20160514|HTC|手機|D728w|3G|057431001157|55097|1157|35153907023514|460006620667069|0.513671875|10.0|\N|\N
20160514|HTC|手機|D728w|3G|057431043861|55084|43861|35153907033487|460027685036740|2937.208984375|8052.0|\N|\N
20160514|HTC|手機|D728w|3G|057431003011|55084|3011|35153907033487|460027685036740|1.755859375|56.0|\N|\N
匯入的資料庫表結構:
create table TEST201605
(
SHI_JIAN,
ZDCS,
ZDFL,
ZDXH,
XQWLLX,
XQWYBH,
LAC,
CI,
IMEI,
IMSI,
THREEG_LL,
THREEG_SZ,
FOURG_LL
)
2.1編寫控制檔案 load.ctl:
load data
CHARACTERSET UTF8 //檢視下檔案的編碼,設為同一個編碼
infile "E:\datafile\000000_0.txt" //只能一個個匯入,可以把多個檔案合併到一個裡,然後匯入
append
into table TEST201605
fields terminated by '|'
trailing nullcols
(
--"時間",
SHI_JIAN,
ZDCS,
ZDFL,
ZDXH,
XQWLLX,
XQWYBH,
LAC,
CI,
IMEI,
IMSI,
THREEG_LL,
THREEG_SZ,
FOURG_LL
)
2.2 windows下
dos命令窗,cd 到load.ctl所在目錄
使用命令:
sqlldr daily/mdasil@daily-74 control=load.ctl log=log.log bad=bad.log errors=5000 rows=1000 bindsize=10485760
linux:
load data
CHARACTERSET UTF8
infile "/datafile-import/000021_0.txt"
append
into table jingfen_201605_1415
fields terminated by '|'
trailing nullcols
(
SHI_JIAN,
ZDCS,
ZDFL,
ZDXH,
XQWLLX,
XQWYBH,
LAC,
CI,
IMEI,
IMSI,
THREEG_LL,
THREEG_SZ,
FOURG_LL
)
oracle使用者下執行:
sqlldr daily/mdasil control=/datafile-import/ctl/44.ctl log=/datafile-import/log/log20160526.log bad=/datafile-import/log/bad20160526.log
rows與bindsize相關,rows預設64行,如果不修改bindsize,只修改rows無效。
bindsize --( 每次提交記錄的緩衝區的大小,位元組為單位,預設256000)
dos視窗會列印:
達到提交點 - 邏輯記錄計數 441884
達到提交點 - 邏輯記錄計數 441954
達到提交點 - 邏輯記錄計數 442024
達到提交點 - 邏輯記錄計數 442094
sqllder 匯入的時候,不支援中文列名,因為檔案裡的都是string,匯入的表欄位也要 字串 型別 。
(可以控制型別,但是如果資料內容格式不對,匯入出錯就比較麻煩,還是以string文字匯入後,再修改表結構)
相關文章
- SQLServer匯出匯入資料到MySQLServerMySql
- 使用Excel匯入資料到SAP Cloud for Customer系統ExcelCloud
- Python批量匯入Excel資料到MySQLPythonExcelMySql
- 使用Oracle SQL Developer匯入Excel資料OracleSQLDeveloperExcel
- Oracle 資料匯入匯出Oracle
- Oracle資料匯入匯出Oracle
- SQLSERVER匯出TXT文字檔案,ORACLE SQL LOADER匯入TXT文字檔案SQLServerOracle
- 如何抽取Oracle資料到文字文件進行查詢NAOracle
- 利用Excel匯入資料到SAP C4CExcel
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- 大文字資料,匯入匯出到資料庫資料庫
- 一次sqlldr匯入慢的解決過程SQL
- 使用Logstash工具匯入sqlserver資料到elasticSearch及elk分散式日誌中心SQLServerElasticsearch分散式
- Oracle 資料匯入ExcelOracleExcel
- oracle資料匯出匯入(exp/imp)Oracle
- Oracle sqlldr工具功能測試OracleSQL
- Oracle使用RMAN從Windows遷移資料到LinuxOracleWindowsLinux
- spark sql與mysql 資料載入與匯出資料到mysqlSparkMySql
- Sqoop匯出ClickHouse資料到HiveOOPHive
- Access 匯入 oracle 資料庫Oracle資料庫
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle資料泵的匯入和匯出Oracle
- 【oracle 資料匯入匯出字元問題】Oracle字元
- 使用pv命令限制SQL文字匯入速度SQL
- Java 匯入資料到Excel並提供檔案下載介面JavaExcel
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- Oracle OCP(55):SQLLDR—CTL檔案OracleSQL
- Oracle OCP(56):SQLLDR-樣例OracleSQL
- KunlunDB 快速入門 4.0(從Oracle實時同步資料到kunlunDB)Oracle
- 從CSV檔案匯入資料到Analytics Cloud裡建立模型和StoryCloud模型
- 大量表格資料(>10萬條)使用PLSQL快速匯入OracleSQLOracle
- Vue匯出資料到Excel電子表格VueExcel
- 【STATS】Oracle匯入匯出優化器統計資訊Oracle優化
- waterdrop匯出hdfs資料到clickhouse(text,csv,json)JSON
- ogg 同步pg資料到oracle--步驟Oracle
- 使用Spark載入資料到SQL Server列儲存表SparkSQLServer
- C#快速匯出百萬級資料到Excel方法C#Excel
- 利用跳板機連線mysql,匯出資料到csvMySql
- [phpword][laravel-admin]匯入文件轉html,並使用富文字編輯後匯出PHPLaravelHTML