達夢資料庫DM8之資料快速載入工具dmfldr使用方法
達夢資料庫DM8之資料快速載入工具dmfldr使用方法
1. 概述
1.1 功能介紹
dmfldr(DM Fast Loader)是 DM 提供的快速資料裝載命令列工具。使用者通過使用 dmfldr 工具能夠把按照一定格式排序的文字資料以簡單、快速、高效的方式載入到 DM 資料庫中,或把 DM 資料庫中的資料按照一定格式寫入文字檔案。
1.2 系統結構
dmfldr 的系統結構如圖所示。
如圖所示,dmfldr 實際上除了客戶端工具,還包含一個在資料庫伺服器中的 dmfldr功能模組,它們共同完成 dmfldr 的各項功能。
-
當進行資料載入時,dmfldr 客戶端接收使用者提交的命令與引數,分析控制檔案與資料檔案,將資料打包傳送給伺服器端的 dmfldr 模組,由伺服器完成資料的真正裝載工作。並分析伺服器返回的訊息,必要時根據使用者引數指定生成日誌檔案與錯誤資料檔案。
-
當進行資料匯出時,dmfldr 客戶端接收使用者提交的命令與引數,分析控制檔案,將使用者要求轉換成相應訊息傳送給伺服器端的 dmfldr 模組。伺服器解析並打包需要匯出的資料,傳送給 dmfldr 客戶端,客戶端將資料寫入指定的資料檔案,必要時根據使用者引數指定生成日誌檔案。
2. dmfldr命令詳解
2.1 dmfldr命令引數
安裝好 DM 資料庫管理系統後,在安裝目錄的“bin/”子目錄下可找到 dmfldr 執行檔案。
[dmdba@dmdb01 ~]$ /dm8/dmdbms/bin/dmfldr help
格式: ./dmfldr KEYWORD=value
例程: ./dmfldr SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl'
USERID 必須是命令列中的第一個引數
CONTROL 必須是命令列中的第二個引數
字串型別引數必須以引號封閉
關鍵字 說明(預設值)
--------------------------------------------------------------------------------
USERID 使用者名稱/口令, 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<os_auth>]
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
<option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...}
--此行外層{}是為了封裝引數之用,書寫時需要保留
<os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
CONTROL 控制檔案,字串型別
LOG 日誌檔案,字串型別 (fldr.log)
BADFILE 錯誤資料記錄檔案,字串型別 (fldr.bad)
SKIP 初始忽略邏輯行數 (0)
LOAD 需要裝載的行數 (ALL)
ROWS 提交頻次 (50000), DIRECT為FALSE有效
DIRECT 是否使用快速方式裝載 (TRUE)
SET_IDENTITY 是否插入自增列 (FALSE)
SORTED 資料是否已按照聚集索引排序 (FALSE)
INDEX_OPTION 索引選項 (1)
1 不重新整理二級索引,資料按照索引先排序,裝載完後再
將排序的資料插入索引
2 不重新整理二級索引,資料裝載完成後重建所有二級索引
3 重新整理二級索引, 資料裝載的同時將資料插入二級索引
ERRORS 允許的最大資料錯誤數 (100)
CHARACTER_CODE 字元編碼,字串型別 (GBK, UTF-8, SINGLE_BYTE, EUC-KR)
MODE 裝載方式,字串型別 IN表示載入,OUT表示載出,
OUTORA表示載出ORACLE (IN)
CLIENT_LOB 大欄位目錄是否在本地 (FALSE)
LOB_DIRECTORY 大欄位資料檔案存放目錄
LOB_FILE_NAME 大欄位資料檔名稱,僅匯出有效 (dmfldr.lob)
BUFFER_NODE_SIZE 讀入檔案緩衝區的大小 (10),有效值範圍1~2048
LOG_SIZE 日誌資訊緩衝區的大小 (1),有效值範圍1~100
READ_ROWS 工作執行緒一次最大處理的行數 (100000),最大支援2^26-10000
NULL_MODE 載入時NULL字串是否處理為NULL
載出時空值是否處理為NULL字串 (FALSE)
NULL_STR 載入時視為NULL值處理的字串
SEND_NODE_NUMBER 執行時傳送節點的個數 (20),有效值範圍16~65535
TASK_THREAD_NUMBER 處理使用者資料的執行緒數目,預設與處理器核數量相同,有效值範圍1~128
BLDR_NUM 伺服器BLDR數目 (64),有效值範圍1~1024
BDTA_SIZE bdta的大小 (5000),有效值範圍100~10000
COMPRESS_FLAG 是否壓縮bdta (FALSE)
MPP_CLIENT MPP環境,是否本地分發 (TRUE)
SINGLE_FILE MPP環境,是否只生成單個資料檔案(FALSE)
LAN_MODE MPP環境,是否以內網模式裝載資料(FALSE)
UNREP_CHAR_MODE 非法字元處理選項(0),為0時表示跳過該資料行,為1時表示使用(*)替換錯誤位元組
SILENT 是否靜默方式裝載資料(FALSE)
BLOB_TYPE BLOB型別欄位資料值的實際型別,字串型別 (HEX_CHAR)
HEX表示值為十六進位制,HEX_CHAR表示值為十六進位制字元型別
僅在direct=FALSE有效
OCI_DIRECTORY OCI動態庫所在的目錄
DATA 指定資料檔案路徑
ENABLE_CLASS_TYPE 允許使用者匯入CLASS型別資料 (FALSE)
FLUSH_FLAG 提交時是否立即刷盤 (FALSE)
IGNORE_BATCH_ERRORS 是否忽略錯誤資料繼續匯入 (FALSE)
SINGLE_HLDR_HP 是否使用單個HLDR裝載HUGE水平分割槽表 (TRUE)
EP 指定需要傳送資料的站點序號列表,僅向MPP環境匯入資料時有效
PARALLEL 是否開啟並行裝載(FALSE)
SQL 使用自定義查詢語句,僅匯出模式有效
HELP 列印幫助資訊
[dmdba@dmdb01 ~]$
2.2 dmfldr使用樣例:
/dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control='/dm8/dmdbms/data/dmfldr/fldr.ctl' log='/dm8/dmdbms/data/dmfldr/fldr.log' badfile='/dm8/dmdbms/data/dmfldr/fldr.bad' errors=999 load=10000 rows=500 character_code= ’SINGLE_BYTE ’
2.3 dmfldr控制檔案樣例
例:一個 dmfldr 控制檔案的例子
OPTIONS
(
SKIP = 0 --跳過資料檔案起始的邏輯行數,整型數值。預設的跳過起始行數為 0 行
ROWS = 50000 --每次提交的行數,整形數值。預設的提交行數為 50000 行
DIRECT = TRUE --快速的載入模式
INDEX_OPTION = 2 --代表伺服器在快速裝載過程中不重新整理二級索引資料,只在裝載完成時重建所有二級索引;
)
LOAD DATA
INFILE '/opt/data/test1.txt' STR X '0A'
BADFILE '/opt/data/test1.bad'
INTO TABLE test1
FIELDS '|' ---列分隔符,使用者應當指定 FIELDS 或者 coldef_option 中的至少一種
(
F1,
F2 DATE FORMAT 'YYYY-MM-DD',
F3 NULL,
F4 TERMINATED BY WHITESPACE ENCLOSE BY '(',
F5 CONSTANT "test",
F6 "trim()"
)
LOAD DATA
INFILE '/opt/data/test2.txt' STR X '0A'
BADFILE '/opt/data/test2.bad'
INTO TABLE test2
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 "sysdate"
)
3. dmfldr命令實戰測試
--測試1:使用 DATA引數指定資料檔案
也可以使用 DATA 引數指定 dmfldr 的資料檔案,資料檔案路徑的優先選擇順序為先控制檔案,後引數選項。如果控制檔案中資料檔案路徑指定為‘*’,在命令列通過 DATA引數指定資料檔案路徑,DATA 所指定的檔案路徑會替換‘*’。
1) 建表 TEST1
SQL> DROP TABLE ww.TEST1;
CREATE TABLE ww.TEST1(C1 INT,C2 INT,C3 DATE);操作已執行
已用時間: 39.348(毫秒). 執行號:1701.
SQL>
操作已執行
已用時間: 3.974(毫秒). 執行號:1702.
SQL>
2) 編輯資料檔案 test1.txt,存放路徑為/dm8/dmdbms/data/dmfldr/test1.txt,檔案內容如下
1 1|2022-04-26
2 2|2022-04-25
3 3|2022-04-24
3) 編輯控制檔案 test.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/test1.ctl,內容如下:
LOAD DATA
INFILE *
INTO TABLE ww.test1
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 DATE FORMAT 'yyyy-mm-dd'
)
4) 使用 dmfldr 進行資料載入
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test1.ctl\' data=\'/dm8/dmdbms/data/dmfldr/test1.txt\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/test1.txt
錯誤檔案:fldr.bad
目標表:WW.TEST1
列名 包裝資料型別 終止
C1 CHARACTER WHT
C2 CHARACTER |
C3 yyyy-mm-dd |
行緩衝區數量: 2
任務執行緒數量: 2
3行記錄已提交
目標表:WW.TEST1
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:6.681(ms)
5) 檢查資料是否匯入成功
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.715(ms)
disql V8
SQL> select * from ww.test1;
行號 C1 C2 C3
---------- ----------- ----------- ----------
1 1 1 2022-04-26
2 2 2 2022-04-25
3 3 3 2022-04-24
已用時間: 2.364(毫秒). 執行號:1900.
SQL>
--測試2:資料轉換與錯誤資料檔案
1) 建表 TEST2
SQL> DROP TABLE WW.TEST2;
CREATE TABLE WW.TEST2(C1 INT,C2 INT,C3 DATE);DROP TABLE WW.TEST2;
已用時間: 0.296(毫秒). 執行號:0.
SQL>
操作已執行
已用時間: 14.244(毫秒). 執行號:1901.
SQL>
2) 編輯資料檔案 test2.txt,存放路徑為/dm8/dmdbms/data/dmfldr/test2.txt,檔案內容如下
1 1|2022-04-26
2 2|2022-04-25
3 3|2022-04-24
44|aaaa-bbb-ccc
3) 編輯控制檔案 test2.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/test2.ctl,內容如下:
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/test2.txt'
INTO TABLE WW.test2
FIELDS '|'
(
C1 TERMINATED BY ' ',
C2,
C3 DATE FORMAT 'yyyy-mm-dd'
)
4) 使用 dmfldr 進行資料載入
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test2.ctl\' badfile=\'/dm8/dmdbms/data/dmfldr/test2.bad\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/test2.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/test2.bad
目標表:WW.TEST2
列名 包裝資料型別 終止
C1 CHARACTER WHT
C2 CHARACTER |
C3 yyyy-mm-dd |
行緩衝區數量: 2
任務執行緒數量: 2
資料檔案少列
3行記錄已提交
目標表:WW.TEST2
3 行載入成功。
由於資料格式錯誤,1行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:4
拒絕的邏輯記錄總數:0
用時:2.423(ms)
[dmdba@dmdb01 dmfldr]$
5) 檢視錯誤資料檔案 test2.bad,其內容如下
[dmdba@dmdb01 dmfldr]$ cat /dm8/dmdbms/data/dmfldr/test2.bad
dmfldr: 2022-04-27 13:04:54 WW->TEST2 44|aaaa-bbb-ccc
SQL> select * from ww.test2;
行號 C1 C2 C3
---------- ----------- ----------- ----------
1 1 1 2022-04-26
2 2 2 2022-04-25
3 3 3 2022-04-24
已用時間: 2.364(毫秒). 執行號:1900.
SQL>
--測試3: 大欄位資料匯出
當 dmfldr 工作在匯出模式即 MODE 為 OUT 時,dmfldr 生成大欄位對應的資料檔名由 LOB_FILE_NAME 指定,若未指定預設為 dmfldr.lob,檔案存放於LOB_DIRECTORY 指定的目錄,如果未指定 LOB_DIRECTORY 則存放於指定的匯出資料檔案同一目錄。
1) 建表 TEST3
SQL> DROP TABLE WW.TEST3;
CREATE TABLE WW.TEST3(C1 INT,C2 BLOB,C3 CLOB);DROP TABLE WW.TEST3;
已用時間: 0.535(毫秒). 執行號:0.
SQL>
操作已執行
已用時間: 5.187(毫秒). 執行號:2100.
SQL>
2) 插入資料
SQL> INSERT INTO WW.TEST3 VALUES(1,0XAB121032DE,'abcdefg');
DMSQL 過程已成功完成
已用時間: 0.801(毫秒). 執行號:2101.
SQL> INSERT INTO WW.TEST3 VALUES(2,0XAB121032DE,'abcdefg');
影響行數 1
已用時間: 0.423(毫秒). 執行號:2102.
SQL> COMMIT;
操作已執行
已用時間: 1.416(毫秒). 執行號:2103.
SQL>
3) 編輯控制檔案 test3.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/test3.ctl,內容如下:
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/test3.txt'
INTO TABLE ww.test3
FIELDS '|'
(
C1,
C2,
C3
)
4) 使用 dmfldr 進行匯出資料
在這個例子中,指定了 LOB_DIRECTORY,而沒有指定 LOB_FILE_NAME,匯出的大欄位資料檔案將存放在 LOB_DIRECTORY 指定的/dm8/dmdbms/data/dmfldr 目錄,檔名為dmfldr.lob。
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test3.ctl\' LOB_DIRECTORY=\'/dm8/dmdbms/data/dmfldr/\' mode=\'out\'
dmfldr V8
2 rows is load out
總共匯出 2 行資料
用時:819.980(ms)
說明:預設生成dmfldr.lob的檔案
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test3.ctl\' LOB_DIRECTORY=\'/dm8/dmdbms/data/dmfldr/\' LOB_FILE_NAME=\'dmfldr3.lob\' mode=\'out\'
dmfldr V8
2 rows is load out
總共匯出 2 行資料
用時:60.851(ms)
說明:也可以指定 LOB_FILE_NAME引數設定檔名稱dmfldr3.lob
5) 檢查 test3.txt 內容
[dmdba@dmdb01 dmfldr]$ cat test3.txt
1|dmfldr.lob:0:5|dmfldr.lob:5:7
2|dmfldr.lob:12:5|dmfldr.lob:17:7
1|dmfldr3.lob:0:5|dmfldr3.lob:5:7
2|dmfldr3.lob:12:5|dmfldr3.lob:17:7
6) 檢查生成的lob檔案
[dmdba@dmdb01 dmfldr]$ ls -l dmfldr*
-rw-r--r-- 1 dmdba dinstall 24 Apr 27 13:21 dmfldr3.lob
-rw-r--r-- 1 dmdba dinstall 24 Apr 27 13:18 dmfldr.lob
--測試4:DIRECT 為 為 TRUE 時大欄位資料的載入
1) 建表 TEST4
SQL> DROP TABLE WW.TEST4;
已用時間: 0.844(毫秒). 執行號:0.
SQL> CREATE TABLE WW.TEST4(C1 INT,C2 BLOB,C3 CLOB);
操作已執行
已用時間: 4.929(毫秒). 執行號:2500.
SQL>
2) 編輯資料檔案 test4.txt,存放路徑為 DM 伺服器所在主庫的/dm8/dmdbms/data/dmfldr/test4.txt,檔案內容如下
1|testblob.txt:0:10|testclob.txt:0:10
2|testblob.txt:10:20|testclob.txt:10:20
3|testblob.txt:20:30|testclob.txt:20:30
其中,testblob.txt、testclob.txt 為文字檔案,長度大於 30 位元組,存放路徑為/dm8/dmdbms/data/dmfldr/。
[dmdba@dmdb01 dmfldr]$ cat testblob.txt
1|testblobtestblobtestblobtestblob1|testblobtestblobtestblobtestblob1
2|testblobtestblobtestblobtestblob2|testblobtestblobtestblobtestblob2
3|testblobtestblobtestblobtestblob3|testblobtestblobtestblobtestblob3
[dmdba@dmdb01 dmfldr]$ cat testclob.txt
1|testclobtestclobtestclobtestclob1|testclobtestclobtestclobtestclob1
2|testclobtestclobtestclobtestclob2|testclobtestclobtestclobtestclob2
3|testclobtestclobtestclobtestclob3|testclobtestclobtestclobtestclob3
[dmdba@dmdb01 dmfldr]$
3) 編輯控制檔案 test4.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/test4.ctl,內容如下:
OPTIONS
(
SKIP = 0
DIRECT = TRUE
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/test4.txt'
BADFILE '/dm8/dmdbms/data/dmfldr/test4.bad'
INTO TABLE ww.test4
FIELDS '|'
(
C1,
C2,
C3
)
4) 使用 dmfldr 進行匯入資料
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test4.ctl\' LOB_DIRECTORY=\'/dm8/dmdbms/data/dmfldr/\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_test4.log\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/test4.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/test4.bad
目標表:WW.TEST4
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
C3 CHARACTER |
行緩衝區數量: 2
任務執行緒數量: 2
3行記錄已提交
目標表:WW.TEST4
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:3.716(ms)
5) 檢查表內容
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.773(ms)
disql V8
SQL> select * from ww.test4;
行號 C1 C2 C3
---------- ----------- -------------------------------------------------------------- ------------------------------
1 1 0x317C74657374626C6F62 1|testclob
2 2 0x74657374626C6F6274657374626C6F6274657374 testclobtestclobtest
3 3 0x7374626C6F6274657374626C6F62317C74657374626C6F6274657374626C stclobtestclob1|testclobtestcl
已用時間: 1.978(毫秒). 執行號:3600.
SQL>
--測試5:DIRECT為 FALSE 時大欄位資料的載入
當 MODE 為 IN 且 DIRECT 為 FALSE 時,資料檔案中大欄位列資料即欄位內容。
BLOB_TYPE 引數指定 BLOB 列內容為十六進位制或者字串:
BLOB_TYPE 為 HEX_CHAR 時,資料檔案中 BLOB 列當作為十六進位制內容;
BLOB_TYPE 為 HEX 時,資料檔案中 BLOB 列為字串形式內容,匯入後會轉換為十六進位制。
BLOB_TYPE 引數只對 DIRECT 為 FALSE 時有效,預設為 HEX_CHAR。
例 1:
1) 建表 TEST5
SQL> CREATE TABLE WW.TEST5(C1 INT,C2 BLOB,C3 CLOB);
操作已執行
已用時間: 8.982(毫秒). 執行號:3700.
SQL>
2) 編輯資料檔案 test5.txt,存放路徑為/dm8/dmdbms/data/dmfldr/test5.txt,檔案內容如下
1|0x12d3c8a7|abcdefg
2|0x12a4cbac|hijlkmn
3|0x22d3c8b3|adefhjd
3) 編輯控制檔案 test5.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/test5.ctl,內容如下:
OPTIONS
(
SKIP = 0
DIRECT = FALSE
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/test5.txt'
BADFILE '/dm8/dmdbms/data/dmfldr/test5.bad'
INTO TABLE ww.test5
FIELDS '|'
(
C1,
C2,
C3
)
4) 使用 dmfldr 進行匯入資料,BLOB_TYPE 為 HEX_CHAR
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test5.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_test5.log\' direct=false blob_type=\'hex_char\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:No
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/test5.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/test5.bad
目標表:WW.TEST5
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
C3 CHARACTER |
3 rows processed.
目標表:WW.TEST5
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:2.676(ms)
[dmdba@dmdb01 dmfldr]$
5) 查詢表資料
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.853(ms)
disql V8
SQL> select * from ww.test5;
行號 C1 C2 C3
---------- ----------- ---------- -------
1 1 0x12D3C8A7 abcdefg
2 2 0x12A4CBAC hijlkmn
3 3 0x22D3C8B3 adefhjd
已用時間: 2.366(毫秒). 執行號:3900.
SQL>
例 2:
步驟 1)、2)、3)同例 1
4) 使用 dmfldr 進行匯入資料,BLOB_TYPE 為 HEX
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/test5.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_test5_1.log\' direct=false blob_type=\'HEX\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:No
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/test5.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/test5.bad
目標表:WW.TEST5
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
C3 CHARACTER |
3 rows processed.
目標表:WW.TEST5
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:2.353(ms)
5) 查詢表資料
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 1.096(ms)
disql V8
SQL> select * from ww.test5;
行號 C1 C2 C3
---------- ----------- ---------------------- -------
1 1 0x30783132643363386137 abcdefg
2 2 0x30783132613463626163 hijlkmn
3 3 0x30783232643363386233 adefhjd
已用時間: 2.225(毫秒). 執行號:4100.
SQL>
--測試6:自增列裝載
自增列是比較特殊的列,為了保證資料庫中自增列列值的正確性,使用者在進行資料載入時需要特別注意。
當 DIRECT 引數為 FALSE 時, dmfldr 將把從資料檔案中讀取的自增列值作為目標值插入資料庫表中,使用者應當保證每一行的自增列的值符合自增列的規則,否則將造成資料混亂。
當 DIRECT 引數為 TRUE 時, dmfldr 提供了 SET_IDENTITY 引數(預設為 FALSE)對資料載入時自增列的處理進行設定:
(1)如果指定 SET_IDENTITY 選項值為 TRUE,則 dmfldr 將把從資料檔案中讀取的自增列值作為目標值插入資料庫表中,使用者應當保證每一行的自增列的值符合自增列的規則,否則將造成資料混亂;
(2)如果 SET_IDENTITY 選項值設定為 FALSE,則 dmfldr 將忽略資料檔案中對應自增列的值,伺服器將根據自增列定義和表中已有資料自動生成自增列的值插入每一行的對應列。
例1:DIRECT=TRUE,SET_IDENTITY=FALSE
1)建立測試表
DROP TABLE ww.TEST6;
CREATE TABLE ww.TEST6(C1 INT IDENTITY(1,1),C2 VARCHAR);
INSERT INTO ww.TEST6(C2) VALUES('AAA');
INSERT INTO ww.TEST6(C2) VALUES('BBB');
COMMIT;
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.891(ms)
disql V8
SQL> CREATE TABLE ww.TEST6(C1 INT IDENTITY(1,1),C2 VARCHAR);
操作已執行
已用時間: 4.538(毫秒). 執行號:4200.
SQL> INSERT INTO ww.TEST6(C2) VALUES('AAA');
INSERT INTO ww.TEST6(C2) VALUES('BBB');
COMMIT;影響行數 1
已用時間: 0.601(毫秒). 執行號:4201.
SQL> 影響行數 1
已用時間: 0.169(毫秒). 執行號:4202.
SQL>
操作已執行
已用時間: 0.915(毫秒). 執行號:4203.
SQL>
---查詢
SQL> select *from ww.TEST6;
行號 C1 C2
---------- ----------- ---
1 1 AAA
2 2 BBB
已用時間: 1.071(毫秒). 執行號:4204.
SQL>
2)編輯資料檔案TEST6.txt,存放路徑/dm8/dmdbms/data/dmfldr/,內容如下:
2|aaa
3|bbb
4|ccc
3)編輯控制檔案TEST6.ctl,存放路徑/dm8/dmdbms/data/dmfldr/,內容如下:
OPTIONS
(
SKIP = 0
ROWS = 50000
INDEX_OPTION = 2
DIRECT=TRUE
SET_IDENTITY=FALSE
)
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/TEST6.txt'
BADFILE '/dm8/dmdbms/data/dmfldr/TEST6.bad'
INTO TABLE ww.TEST6
FIELDS '|'
(C1,
C2
)
4)裝載資料(DIRECT=TRUE SET_IDENTITY=FALSE)
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST6.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST6.log\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST6.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/TEST6.bad
目標表:WW.TEST6
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
行緩衝區數量: 2
任務執行緒數量: 2
3行記錄已提交
目標表:WW.TEST6
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:1.435(ms)
5)檢查匯入後表資訊
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.666(ms)
disql V8
SQL> select * from ww.TEST6;
行號 C1 C2
---------- ----------- ---
1 1 AAA
2 2 BBB
3 3 aaa
4 4 bbb
5 5 ccc
已用時間: 1.263(毫秒). 執行號:4400.
SQL>
例2:DIRECT=TRUE,SET_IDENTITY=TRUE
重複上面(1)(2)(3)步驟;
4)裝載資料 DIRECT=TRUE SET_IDENTITY=TRUE
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST6.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST6_1.log\' DIRECT=TRUE SET_IDENTITY=TRUE
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:Yes
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST6.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/TEST6.bad
目標表:WW.TEST6
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
行緩衝區數量: 2
任務執行緒數量: 2
3行記錄已提交
目標表:WW.TEST6
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:1.513(ms)
5)查詢資料
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.743(ms)
disql V8
SQL> select * from ww.TEST6;
行號 C1 C2
---------- ----------- ---
1 1 AAA
2 2 BBB
3 2 aaa
4 3 bbb
5 4 ccc
已用時間: 0.857(毫秒). 執行號:4600.
SQL>
注意: 在表中有自增列的情況下裝載時,dmfldr引數direct=false效果與direct=true set_identity=true相同,都是將把從dmfldr資料檔案中讀取的自增列值作為目標值插入資料庫表中,這種情況需要保證每一行的自增列的值符合自增列的規則,否則將造成資料混亂。
--測試7:空值處理
dmfldr 通過設定 NULL_MODE 引數來處理空值。
設定為TRUE,載入時NULL字串處理為NULL,載出時空值處理為NULL字串;
設定為FALSE,載入時NULL字串處理為字串,載出時空值處理為空串。
例1:匯入NULL_MODE=TRUE
1)建立測試表TEST7
drop table ww.TEST7;
create table ww.TEST7(c1 int,c2 varchar(20));
SQL> create table ww.TEST7(c1 int,c2 varchar(20));
操作已執行
已用時間: 11.521(毫秒). 執行號:4700.
SQL>
2)編輯資料檔案TEST7.txt,存放路徑/dm8/dmdbms/data/dmfldr,內容如下:
1|aaa
2|NULL
3|null
3)編輯控制檔案TEST7.ctl,存放路徑/dm8/dmdbms/data/dmfldr,內容如下:
OPTIONS
(
SKIP = 0
ROWS = 50000
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/TEST7.txt'
BADFILE '/dm8/dmdbms/data/dmfldr/TEST7.bad'
INTO table ww.TEST7
FIELDS '|'
(C1,
C2
)
4)裝載資料 null_mode=true
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST7.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7.log\' null_mode=true
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST7.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/TEST7.bad
目標表:WW.TEST7
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
行緩衝區數量: 2
任務執行緒數量: 2
3行記錄已提交
目標表:WW.TEST7
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:1.608(ms)
5)檢視資料
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.738(ms)
disql V8
SQL> select * from ww.TEST7;
行號 C1 C2
---------- ----------- ----
1 1 aaa
2 2 NULL
3 3 NULL
已用時間: 1.383(毫秒). 執行號:4900.
SQL>
SQL> select c1 ,ifnull(c2,'null value') from ww.TEST7;
行號 C1 "IFNULL"(C2,'nullvalue')
---------- ----------- ------------------------
1 1 aaa
2 2 null value
3 3 null value
已用時間: 0.884(毫秒). 執行號:4901.
SQL>
例2:匯入NULL_MODE=FALSE
執行上面 1)2)3)步驟;
4)裝載資料 null_mode=false
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST7.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7_1.log\' null_mode=false
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST7.txt
錯誤檔案:/dm8/dmdbms/data/dmfldr/TEST7.bad
目標表:WW.TEST7
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
行緩衝區數量: 2
任務執行緒數量: 2
3行記錄已提交
目標表:WW.TEST7
3 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:3
拒絕的邏輯記錄總數:0
用時:1.192(ms)
5)檢查匯入後表資訊
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 0.631(ms)
disql V8
SQL> select * from ww.TEST7;
行號 C1 C2
---------- ----------- ----
1 1 aaa
2 2 NULL
3 3 null
已用時間: 1.326(毫秒). 執行號:5100.
SQL> select c1 ,ifnull(c2,'null value') from ww.TEST7;
行號 C1 "IFNULL"(C2,'nullvalue')
---------- ----------- ------------------------
1 1 aaa
2 2 NULL
3 3 null
已用時間: 0.607(毫秒). 執行號:5101.
SQL>
注意:可以看到當設定null_mode=false時,裝載資料時"NULL"、“null"會被作為"NULL”、"null"兩個字串插入到表中;
例3:匯出NULL_MODE=TRUE
執行"匯入NULL_MODE=TRUE"的所有步驟,然後修改控制檔案內容如下:
OPTIONS
(
SKIP = 0
ROWS = 50000
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/TEST7_1.txt'
BADFILE '/dm8/dmdbms/data/dmfldr/TEST7_1.bad'
INTO table ww.TEST7
FIELDS '|'
(C1,
C2
)
4)執行匯出 NULL_MODE=TRUE
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST7_1.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7_3.log\' null_mode=TRUE mode=\'out\'
dmfldr V8
3 rows is load out
總共匯出 3 行資料
用時:59.265(ms)
[dmdba@dmdb01 dmfldr]$
5)檢視匯出檔案內容
[dmdba@dmdb01 dmfldr]$ cat /dm8/dmdbms/data/dmfldr/TEST7_1.txt
1|aaa
2|NULL
3|NULL
[dmdba@dmdb01 dmfldr]$
注意:可以看到匯出值為NULL字串。
例4:匯出NULL_MODE=FALSE
執行"匯入NULL_MODE=TRUE"的所有步驟,然後修改控制檔案內容如下:
OPTIONS
(
SKIP = 0
ROWS = 50000
INDEX_OPTION = 2
)
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/TEST7_2.txt'
BADFILE '/dm8/dmdbms/data/dmfldr/test_2.bad'
INTO table ww.TEST7
FIELDS '|'
(C1,
C2
)
4)執行匯出 NULL_MODE=FALSE
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST7_2.ctl\' LOG=\'/dm8/dmdbms/data/dmfldr/dmfldr_TEST7_3.log\' null_mode=FALSE mode=\'out\'
dmfldr V8
3 rows is load out
總共匯出 3 行資料
用時:66.175(ms)
[dmdba@dmdb01 dmfldr]$
5)檢視匯出檔案內容
[dmdba@dmdb01 dmfldr]$ cat TEST7_2.txt
1|aaa
2|
3|
[dmdba@dmdb01 dmfldr]$
注意:可以看到,設定null_mode=false,匯出檔案內容值為空字串。
dmfldr使用限制
(1)不支援向臨時表、外部表裝載資料
(2)不支援向系統表裝載資料
(3)不支援向帶有點陣圖索引的表裝載資料
(4)不支援向帶有函式索引的表裝載資料
(5)不支援向帶有全文索引的表裝載資料
(6)不支援向 DCP 代理裝載資料
(7)dmfldr裝載時,對約束進行檢查.
--測試8:多表裝載
通過在控制檔案中指定多個 INTO TABLE 子句,可以將一批資料同時向多個表進行裝載。每個 INTO TABLE 子句中都可以指定 WHEN 過濾條件、FIELDS 子句和列定義子句。
對於多表裝載的使用需注意以下幾點:
對於第二個及其之後的 INTO TABLE 子句,在其 coldef_option 中,必須為所有列指定 POSITION 選項;
在 INTO TABLE 子句的目標表中,如果目標表各不相同,則一個批次就可以完成裝載完成(不管含有多少表,只需掃描一次資料檔案即可);如果含有重複的目標表,則相同的表需要分批次匯入(每當遇到相同的表時,就需要再掃描一遍原始檔。N 個重複的表,就需要掃描 N 次原始檔)。
1) 建表 TEST1、TEST2
DROP TABLE TEST1;
DROP TABLE TEST2;
CREATE TABLE TEST1(C1 INT,C2 INT);
CREATE TABLE TEST2(C1 INT,C2 INT);
SQL> DROP TABLE TEST1;
DROP TABLE TEST2;
CREATE TABLE TEST1(C1 INT,C2 INT);
CREATE TABLE TEST2(C1 INT,C2 INT);DROP TABLE TEST1;
已用時間: 0.414(毫秒). 執行號:0.
SQL> 操作已執行
已用時間: 11.541(毫秒). 執行號:7106.
SQL> 操作已執行
已用時間: 3.193(毫秒). 執行號:7107.
SQL>
操作已執行
已用時間: 12.095(毫秒). 執行號:7108.
SQL>
2) 編輯資料檔案 TEST8.txt,存放路徑為/dm8/dmdbms/data/dmfldr/TEST8.txt,檔案內容如下
1,2
2,3
3,2
4,8
9,1
3) 編輯控制檔案 TEST8.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/TEST8.ctl,內容如下:
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/TEST8.txt'
INTO TABLE test1
WHEN C1 != '1'
FIELDS ','
(
c1 position (1:1),
c2 position (3:3)
)
INTO TABLE test2
WHEN (3:3) = '2' AND c1 != '3'
FIELDS ','
(
c1 position (1:1),
c2 position (3:3)
)
4) 使用 dmfldr 進行資料載入
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST8.ctl\'
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:全部
每次提交伺服器行數:50000
跳過行數:0
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST8.txt
錯誤檔案:fldr.bad
目標表:TEST1
列名 包裝資料型別 終止
C1 CHARACTER ,
C2 CHARACTER ,
行緩衝區數量: 2
任務執行緒數量: 2
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST8.txt
錯誤檔案:fldr.bad
目標表:TEST2
列名 包裝資料型別 終止
C1 CHARACTER ,
C2 CHARACTER ,
行緩衝區數量: 2
任務執行緒數量: 2
4行記錄已提交
1行記錄已提交
目標表:TEST1
4 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:5
拒絕的邏輯記錄總數:0
用時:2.934(ms)
目標表:TEST2
1 行載入成功。
由於資料格式錯誤,0行 丟棄資料錯誤,DM8之數0行 沒有載入。
跳過的邏輯記錄總數:0
讀取的邏輯記錄總數:5
拒絕的邏輯記錄總數:0
用時:2.934(ms)
[dmdba@dmdb01 dmfldr]$
5) 檢視錶 TEST1 和 TEST2 的資料如下
SQL> SELECT * FROM TEST1;
行號 C1 C2
---------- ----------- -----------
1 2 3
2 3 2
3 4 8
4 9 1
已用時間: 0.533(毫秒). 執行號:7109.
SQL>
SQL> SELECT * FROM TEST2;
行號 C1 C2
---------- ----------- -----------
1 1 2
已用時間: 0.638(毫秒). 執行號:7110.
SQL>
---- 測試9:個性化設定
使用者通過設定 dmfldr 的 SKIP、LOAD、ROWS 引數,可以根據自己的需求調整裝載的起始行、裝載最大行數以及每次提交的行數。
SKIP 引數用來設定跳過資料檔案起始的邏輯行數,整形數值。預設的跳過起始行數為0 行。如果使用者指定了多個檔案,且起始檔案中的行數不足 SKIP 所指定的行數,則dmfldr 工具會掃描下一個檔案直至累加的行數等於 SKIP 所設定的行數或者所有檔案都已掃描結束。
LOAD 引數用來設定裝載的最大行數,整形數值。預設的最大裝載行數為資料檔案中的所有行數。LOAD 指定的值不包括 SKIP 指定的跳過的行數。
ROWS 引數用來設定每次提交的行數,整形數值。預設的提交行數為 50000 行。提交行數的值表示提交到伺服器的行數,並不一定代表按照資料檔案中的資料順序的行數。使用者可以根據實際情況調整每次提交的行數,以達到效能的最佳點。ROWS 引數作用於 MODE 為IN 的情況下,當 MODE 為 OUT 時無效。
例如:
1) 建表 TEST9
DROP TABLE ww.TEST9;
CREATE TABLE ww.TEST9(C1 INT,C2 VARCHAR);
SQL> CREATE TABLE ww.TEST9(C1 INT,C2 VARCHAR);
操作已執行
已用時間: 33.578(毫秒). 執行號:500.
SQL>
2) 編輯資料檔案 TEST9.txt,存放路徑為/dm8/dmdbms/data/dmfldr/TEST9.txt,檔案內容如下
1|aaa
2|bbb
3|ccc
4|ddd
5|eee
6|fff
7|ggg
8|hhh
9|iii
10|jjj
3) 編輯控制檔案 test.ctl,存放路徑為/dm8/dmdbms/data/dmfldr/TEST9.ctl,內容如下:
LOAD DATA
INFILE '/dm8/dmdbms/data/dmfldr/TEST9.txt'
INTO TABLE ww.TEST9
FIELDS '|'
(
C1,
C2
)
4) 使用 dmfldr 進行資料載入
[dmdba@dmdb01 dmfldr]$ /dm8/dmdbms/bin/dmfldr userid=SYSDBA/SYSDBA@192.168.186.128:5240 control=\'/dm8/dmdbms/data/dmfldr/TEST9.ctl\' skip=3 load=5
dmfldr V8
dmfldr:
Copyright (c) 2011, 2015, Dameng. All rights reserved.
控制檔案:
載入行數:5
每次提交伺服器行數:50000
跳過行數:3
允許錯誤數:100
是否直接載入:Yes
是否插入自增列:No
資料是否已按照聚集索引排序:No
字符集:GBK
資料檔案共1個:
/dm8/dmdbms/data/dmfldr/TEST9.txt
錯誤檔案:fldr.bad
目標表:WW.TEST9
列名 包裝資料型別 終止
C1 CHARACTER |
C2 CHARACTER |
行緩衝區數量: 2
任務執行緒數量: 2
5行記錄已提交
目標表:WW.TEST9
5 行載入成功。
由於資料格式錯誤,0行 丟棄。
由於資料錯誤,0行 沒有載入。
跳過的邏輯記錄總數:3
讀取的邏輯記錄總數:5
拒絕的邏輯記錄總數:0
用時:4.863(ms)
[dmdba@dmdb01 dmfldr]$
5) 檢視錶 TEST 的資料,載入時跳過了資料檔案的前 3 行資料,且只載入了 5 條資料。
[dmdba@dmdb01 dmfldr]$ disql SYSDBA/SYSDBA@192.168.186.128:5240
伺服器[192.168.186.128:5240]:處於普通開啟狀態
登入使用時間 : 1.070(ms)
disql V8
SQL> select * from ww.TEST9;
行號 C1 C2
---------- ----------- ---
1 4 ddd
2 5 eee
3 6 fff
4 7 ggg
5 8 hhh
已用時間: 9.083(毫秒). 執行號:800.
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017402/viewspace-2890763/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 達夢dmfldr資料快速載入
- 達夢資料裝載工具-dmfldr使用注意事項總結
- 【達夢】Docker安裝達夢資料庫 dm8Docker資料庫
- 達夢遷移工具之MySQL資料庫遷移到達夢MySql資料庫
- 達夢dmfldr載入大欄位
- 達夢資料庫DM8之REDOLOG重做日誌檔案管理資料庫
- 達夢資料庫DM8之刪除歸檔日誌檔案資料庫
- 國產化之銀河麒麟安裝達夢資料庫DM8資料庫
- 達夢資料庫DM8中WITH子句的簡單用法資料庫
- 資料庫國產化實戰之達夢資料庫資料庫
- 達夢資料庫DM8共享叢集測試記錄資料庫
- 國產化之 .NET Core 操作達夢資料庫DM8的兩種方式資料庫
- Kylin Desktop V10部署達夢資料庫(DM8)資料庫
- 達夢資料庫DM8主備叢集測試記錄資料庫
- 借力中國資料庫技術大會 達夢DM8資料庫新品正式釋出資料庫
- 達夢資料庫DM8在LINUX環境下安裝步驟資料庫Linux
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 四、python讀mysql寫入達夢資料庫資料庫MySqlPython
- 達夢DM7 資料庫之資料守護DG搭建資料庫
- 達夢資料庫安裝資料庫
- 達夢資料庫開發資料庫
- 初識達夢資料庫資料庫
- 達夢資料庫學習資料庫
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 八、python讀達夢資料庫資料庫MySqlPython
- 達夢資料庫學習心得資料庫
- 達夢資料庫日常運維資料庫運維
- 達夢資料庫基礎---表資料庫
- 織夢資料庫_織夢還原資料庫_織夢資料庫很卡資料庫
- 達夢資料庫Disql用法詳解之Disql啟動與登入資料庫SQL
- 達夢資料庫遷移資料/複製表/匯入匯出2資料庫
- 達夢資料庫DM管理工具如何瀏覽資料,用條件篩選資料資料庫
- 達夢資料庫資料檔案遷移過程資料庫
- 配置ORACLE資料庫到達夢資料庫的異構DBLINKOracle資料庫
- 達夢資料庫DM管理工具如何新增修改刪除資料庫欄位資料庫
- 達夢資料庫備份恢復資料庫
- 達夢7資料庫初始化資料庫
- 達夢資料庫之初步測試資料庫