1 快速載入載出工具
1.1 基本概念
1.1.1 dmfldr簡介
dmfldr(DM Fast Loader)是 DM 提供的快速數(shù)據(jù)裝載命令行工具。用戶通過使用dmfldr 工具能夠把按照一定格式排序的文本數(shù)據(jù)以簡單、快速绽昼、高效的方式載入到 DM 數(shù)據(jù)庫中厌漂,或把 DM 數(shù)據(jù)庫中的數(shù)據(jù)按照一定格式寫入文本文件苫拍。相較于dexp和dimp的專用格式的導入導出峭咒,dmfldr更適合異構數(shù)據(jù)系統(tǒng)的數(shù)據(jù)快速圣拄、通用的數(shù)據(jù)交換方案绘迁。
1.1.2 使用場景
- 大表數(shù)據(jù)遷移
- 大表復制
- 大表數(shù)據(jù)快速備份
1.1.3 模式
Dmfldr命令行工具分為IN和OUT兩種模式合溺,IN模式用于數(shù)據(jù)載入,OUT模式用于數(shù)據(jù)載出缀台。在使用方式上棠赛,大部分參數(shù)用法對于兩種模式均適用,所以膛腐,很多時候我們可以用同一個參數(shù)配置文件(dmfldr稱為控制參數(shù)文件)進行載入和載出工作睛约。
1.1.4 基本語法
dmfldr USERID=****數(shù)據(jù)庫連接信息 CONTROL=****控制參數(shù)文件 MODE=IN|OUT
USERID:其中USERID指定的數(shù)據(jù)庫連接串和disql命令行工具的數(shù)據(jù)庫連接串相似,例如:dmfldr USERID=SYSDBA/SYSDBA@localhost:5236 CONTROL=’d:\f.ctl’ MODE=’IN‘
控制參數(shù)文件內(nèi)容:
OPTIONS
(
鍵=值
)
load
infile '載入載出數(shù)據(jù)文件路徑'
str [X] '如str后有X選項哲身,表示行分隔符為十六進制表示辩涝,如0A'
APPEND|REPLACE|INSERT
into table 模式.表名
fields '字段分隔符'
(
字段名1,
字段名2 DATE FORMAT 'YYYY-MM-DD',
字段名3 NULL,
字段名4 TERMINATED [X] ‘終止符’ ENCLOSE [X] '字符引用符',
字段名5 CONSTANT "test",
字段名6 "系統(tǒng)函數(shù)()"
……
)
控制參數(shù)文件說明:
- OPTIONS為可選參數(shù),所有可用參數(shù)請使用dmfldr help命令進行了解勘天。
- 具體字段名和字段數(shù)量根據(jù)實際情況填寫怔揩。
- APPEND|REPLACE|INSERT:默認APPEND追加,REPLACE清空后寫入误辑,INSERT只允許空表或空文件寫入
- 字段列表中:DATE FORMAT表示日期格式沧踏,NULL表示忽略數(shù)據(jù)文件字段值,TERMINATED表示可選的字段終止符號巾钉,[X]表示后面的字符是否為十六進制表示翘狱,ENCLOSE表示字符類型值的邊界包圍符,CONSTANT表示該字段寫入指定常量值砰苍,系統(tǒng)函數(shù)()可選用trim()潦匈、replace(字段名阱高,查找值,替換值)茬缩、sysdate函數(shù)
1.2 OUT模式實戰(zhàn)
- 編輯d:\data\f.ctl控制參數(shù)文件赤惊,內(nèi)容如下:
OPTIONS
(
ROWS=100000
INDEX_OPTION=2
)
load
infile 'd:\wd.txt'
str X '0A'
REPLACE
into table "TEST"."WEATHERDATA"
fields '|'
(
"LOG_DATE",
"TIME",
"STATION",
"TEMP",
"HUMIDITY",
"AIRPRESSURE",
"WIND",
"WEATHER",
"WINDDIRECTION"
)
- 執(zhí)行dmfldr載出,命令如下:
dmfldr.exe userid=SYSDBA/SYSDBA@localhost control='d:\data\f.ctl' mode='OUT'
----------------------以下為命令執(zhí)行完成后的輸出-------------------------
總共導出 4626432 行數(shù)據(jù)
用時:6511.113(ms)
1.3 IN模式實戰(zhàn)
- 編輯d:\data\f.ctl控制參數(shù)文件凰锡,內(nèi)容如下:
OPTIONS
(
ROWS=100000
INDEX_OPTION=2
)
load
infile 'd:\wd.txt'
str X '0A'
REPLACE
into table "TEST"."WEATHERDATA"
fields '|'
(
"LOG_DATE",
"TIME",
"STATION",
"TEMP",
"HUMIDITY",
"AIRPRESSURE",
"WIND",
"WEATHER",
"WINDDIRECTION"
)
- 執(zhí)行dmfldr導入未舟,命令如下:
dmfldr.exe userid=SYSDBA/SYSDBA@localhost control='d:\data\f.ctl' mode='IN'
----------------------以下為命令執(zhí)行完成后的輸出-------------------------
目標表:TEST.WEATHERDATA
4626432 行加載成功。
由于數(shù)據(jù)格式錯誤,0行 丟棄掂为。
由于數(shù)據(jù)錯誤,0行 沒有加載裕膀。
跳過的邏輯記錄總數(shù):0
讀取的邏輯記錄總數(shù):4626432
拒絕的邏輯記錄總數(shù):0
用時:18882.510(ms)
1.4 使用技巧
- DTS的【使用快速裝載】選項無需進行復雜的命令行編輯即可快速輕松開始工作
- DTS的【使用快速裝載】選項可以幫助工程師快速生成控制參數(shù)文件內(nèi)容
- ROWS:在內(nèi)存、CPU 允許的條件下勇哗,將該選項設置得稍大一些昼扛,有助于提高性能
- BDTA_SIZE:在內(nèi)存、CPU 允許的條件下欲诺,增大該值能加快裝載速度
- INDEX_OPTION:空表或原本表數(shù)據(jù)量很小時抄谐,設置為2;原有表數(shù)據(jù)量遠大于插入數(shù)據(jù)量扰法,設置為3蛹含;