文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  ndb_import — 將 CSV 資料匯入 NDB

25.5.13 ndb_import — 將 CSV 資料匯入 NDB

ndb_import 匯入 CSV 格式的資料,例如由 mysqldump --tab 產生的資料,直接使用 NDB API 匯入 NDBndb_import 需要連線到 NDB 管理伺服器 (ndb_mgmd) 才能運作;它不需要連線到 MySQL 伺服器。

使用方式

ndb_import db_name file_name options

ndb_import 需要兩個引數。db_name 是資料表的資料庫名稱,要將資料匯入該資料表;file_name 是要讀取資料的 CSV 檔案名稱;如果檔案不在目前的目錄中,則必須包含檔案的路徑。檔案名稱必須與資料表的名稱相符;檔案的副檔名 (如果有的話) 不會被考慮。 ndb_import 支援的選項包括指定欄位分隔符號、跳脫符號和行終止符號的選項,將在本節稍後說明。

ndb_import 會拒絕從 CSV 檔案讀取的任何空行,但匯入單一欄時例外,在這種情況下,可以使用空值作為欄位值。ndb_import 處理此問題的方式與 LOAD DATA 陳述式相同。

ndb_import 必須能夠連線到 NDB Cluster 管理伺服器;因此,叢集 config.ini 檔案中必須有一個未使用的 [api] 插槽。

若要複製現有使用不同儲存引擎 (例如 InnoDB) 的資料表,作為 NDB 資料表,請使用 mysql 用戶端執行 SELECT INTO OUTFILE 陳述式,將現有資料表匯出到 CSV 檔案,然後執行 CREATE TABLE LIKE 陳述式,建立一個與現有資料表具有相同結構的新資料表,然後對新資料表執行 ALTER TABLE ... ENGINE=NDB;在此之後,從系統 Shell 叫用 ndb_import,將資料載入新的 NDB 資料表。例如,假設您已使用適當的權限登入為 MySQL 使用者,則可以將資料庫名為 myinnodb 中的現有 InnoDB 資料表 myinnodb_table 匯出到資料庫名為 myndbNDB 資料表 myndb_table,如下所示

  1. mysql 用戶端中

    mysql> USE myinnodb;
    
    mysql> SELECT * INTO OUTFILE '/tmp/myndb_table.csv'
         >  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'
         >  LINES TERMINATED BY '\n'
         >  FROM myinnodbtable;
    
    mysql> CREATE DATABASE myndb;
    
    mysql> USE myndb;
    
    mysql> CREATE TABLE myndb_table LIKE myinnodb.myinnodb_table;
    
    mysql> ALTER TABLE myndb_table ENGINE=NDB;
    
    mysql> EXIT;
    Bye
    $>

    一旦建立目標資料庫和資料表後,不再需要執行 mysqld。如果您願意,可以在繼續之前使用 mysqladmin shutdown 或其他方法停止它。

  2. 在系統 Shell 中

    # if you are not already in the MySQL bin directory:
    $> cd path-to-mysql-bin-dir
    
    $> ndb_import myndb /tmp/myndb_table.csv --fields-optionally-enclosed-by='"' \
        --fields-terminated-by="," --fields-escaped-by='\\'

    輸出應類似於此處所示的內容

    job-1 import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 [running] import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 [success] import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 imported 19984 rows in 0h0m9s at 2277 rows/s
    jobs summary: defined: 1 run: 1 with success: 1 with failure: 0
    $>

下表顯示了所有可與 ndb_import 一起使用的選項。其他說明請參閱表格後面的說明。

  • --abort-on-error

    命令列格式 --abort-on-error

    在任何嚴重錯誤時傾印核心;僅用於偵錯。

  • --ai-increment=#

    命令列格式 --ai-increment=#
    類型 整數
    預設值 1
    最小值 1
    最大值 4294967295

    對於具有隱藏主鍵的資料表,請指定自動遞增增量,就像 MySQL 伺服器中的 auto_increment_increment 系統變數一樣。

  • --ai-offset=#

    命令列格式 --ai-offset=#
    類型 整數
    預設值 1
    最小值 1
    最大值 4294967295

    對於具有隱藏主鍵的資料表,請指定自動遞增偏移量。類似於 auto_increment_offset 系統變數。

  • --ai-prefetch-sz=#

    命令列格式 --ai-prefetch-sz=#
    類型 整數
    預設值 1024
    最小值 1
    最大值 4294967295

    對於具有隱藏主鍵的資料表,請指定預先擷取的自動遞增值的數量。其行為類似於 MySQL 伺服器中的 ndb_autoincrement_prefetch_sz 系統變數。

  • --character-sets-dir

    命令列格式 --character-sets-dir=路徑

    包含字元集的目錄。

  • --connections=#

    命令列格式 --connections=#
    類型 整數
    預設值 1
    最小值 1
    最大值 4294967295

    要建立的叢集連線數。

  • --connect-retries

    命令列格式 --connect-retries=#
    類型 整數
    預設值 12
    最小值 0
    最大值 12

    放棄之前重試連線的次數。

  • --connect-retry-delay

    命令列格式 --connect-retry-delay=#
    類型 整數
    預設值 5
    最小值 0
    最大值 5

    嘗試聯絡管理伺服器時,在嘗試之間等待的秒數。

  • --connect-string

    命令列格式 --connect-string=連線字串
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --continue

    命令列格式 --continue

    當作業失敗時,繼續下一個作業。

  • --core-file

    命令列格式 --core-file

    在錯誤時寫入核心檔案;用於偵錯。

  • --csvopt=string

    命令列格式 --csvopt=opts
    類型 字串
    預設值 [無]

    提供設定典型 CSV 匯入選項的快速方法。此選項的引數是一個字串,由下列一或多個參數組成

    • c: 以逗號分隔的欄位

    • d: 使用預設值,但被另一個參數覆寫的情況除外

    • n: 以 \n 分隔的行

    • q: 欄位可選擇用雙引號字元括住 (")

    • r: 以 \r 分隔的行

    此選項的引數中所使用的參數順序的處理方式是,最右邊的參數始終優先於已在同一引數值中使用的任何可能衝突的參數。這也適用於給定參數的任何重複執行個體。

    此選項適用於在難以傳輸跳脫符號或引號的條件下進行測試。

  • --db-workers=#

    命令列格式 --db-workers=#
    類型 整數
    預設值 4
    最小值 1
    最大值 4294967295

    每個資料節點執行資料庫操作的執行緒數。

  • --defaults-file

    命令列格式 --defaults-file=路徑
    類型 字串
    預設值 [無]

    僅從指定的檔案讀取預設選項。

  • --defaults-extra-file

    命令列格式 --defaults-extra-file=路徑
    類型 字串
    預設值 [無]

    在讀取全域檔案後讀取指定的檔案。

  • --defaults-group-suffix

    命令列格式 --defaults-group-suffix=字串
    類型 字串
    預設值 [無]

    也讀取 concat(group, suffix) 的群組。

  • --errins-type=name

    命令列格式 --errins-type=名稱
    類型 列舉
    預設值 [無]
    有效值

    stopjob

    stopall

    sighup

    sigint

    list

    錯誤插入類型;使用 list 作為 name 值來取得所有可能的值。此選項僅用於測試目的。

  • --errins-delay=#

    命令列格式 --errins-delay=#
    類型 整數
    預設值 1000
    最小值 0
    最大值 4294967295
    單位 毫秒

    錯誤插入延遲 (以毫秒為單位);會加入隨機變化。此選項僅用於測試目的。

  • --fields-enclosed-by=char

    命令列格式 --fields-enclosed-by=char
    類型 字串
    預設值 [無]

    此選項的作用方式與 LOAD DATA 陳述式的 FIELDS ENCLOSED BY 選項相同,指定一個字元來解析為欄位值的引號。對於 CSV 輸入,這與 --fields-optionally-enclosed-by 相同。

  • --fields-escaped-by=name

    命令列格式 --fields-escaped-by=char
    類型 字串
    預設值 \

    指定一個跳脫字元,其作用方式與 SQL LOAD DATA 陳述式的 FIELDS ESCAPED BY 選項相同。

  • --fields-optionally-enclosed-by=char

    命令列格式 --fields-optionally-enclosed-by=char
    類型 字串
    預設值 [無]

    此選項的作用方式與 LOAD DATA 陳述式的 FIELDS OPTIONALLY ENCLOSED BY 選項相同,指定一個字元來解析為選擇性地將欄位值引起來。對於 CSV 輸入,這與 --fields-enclosed-by 相同。

  • --fields-terminated-by=char

    命令列格式 --fields-terminated-by=char
    類型 字串
    預設值 \t

    此選項的作用方式與 LOAD DATA 陳述式的 FIELDS TERMINATED BY 選項相同,指定一個字元來解析為欄位分隔符號。

  • --help

    命令列格式 --help

    顯示說明文字並結束。

  • --idlesleep=#

    命令列格式 --idlesleep=#
    類型 整數
    預設值 1
    最小值 1
    最大值 4294967295
    單位 毫秒

    等待執行更多工作而休眠的毫秒數。

  • --idlespin=#

    命令列格式 --idlespin=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295

    在休眠前重試的次數。

  • --ignore-lines=#

    命令列格式 --ignore-lines=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295

    使 ndb_import 忽略輸入檔的前 # 行。這可以用來跳過不包含任何資料的檔案標頭。

  • --input-type=name

    命令列格式 --input-type=name
    類型 列舉
    預設值 csv
    有效值

    random

    csv

    設定輸入類型。預設值為 csvrandom 僅供測試用途使用。

  • --input-workers=#

    命令列格式 --input-workers=#
    類型 整數
    預設值 4
    最小值 1
    最大值 4294967295

    設定處理輸入的執行緒數。

  • --keep-state

    命令列格式 --keep-state

    依預設,ndb_import 會在完成工作時移除所有狀態檔 (除了非空的 *.rej 檔案)。指定此選項 (不需要引數) 以強制程式保留所有狀態檔。

  • --lines-terminated-by=name

    命令列格式 --lines-terminated-by=char
    類型 字串
    預設值 \n

    此選項的作用方式與 LOAD DATA 陳述式的 LINES TERMINATED BY 選項相同,指定一個字元來解析為行尾。

  • --log-level=#

    命令列格式 --log-level=#
    類型 整數
    預設值 0
    最小值 0
    最大值 2

    以給定的層級執行內部記錄。此選項主要用於內部和開發用途。

    只有在 NDB 的偵錯組建中,才能使用此選項將記錄層級設定為最大值 4。

  • --login-path

    命令列格式 --login-path=path
    類型 字串
    預設值 [無]

    從登入檔讀取給定的路徑。

  • --no-login-paths

    命令列格式 --no-login-paths

    跳過從登入路徑檔案讀取選項。

  • --max-rows=#

    命令列格式 --max-rows=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295
    單位 bytes

    僅匯入此數量的輸入資料列;預設值為 0,這表示匯入所有列。

  • --missing-ai-column

    命令列格式 --missing-ai-column='name'
    類型 Boolean
    預設值 FALSE

    此選項可用於匯入單個資料表或多個資料表。當使用此選項時,它表示要匯入的 CSV 檔案不包含任何 AUTO_INCREMENT 欄位的值,並且 ndb_import 應提供這些值;如果使用此選項並且 AUTO_INCREMENT 欄位包含任何值,則匯入作業無法繼續。

  • --monitor=#

    命令列格式 --monitor=#
    類型 整數
    預設值 2
    最小值 0
    最大值 4294967295
    單位 bytes

    如果發生變更 (狀態、遭拒絕的列、暫時性錯誤),則定期列印正在執行之工作的狀態。設定為 0 以停用此報告。設定為 1 會列印所看到的任何變更。較高的值會降低此狀態報告的頻率。

  • --ndb-connectstring

    命令列格式 --ndb-connectstring=connection_string
    類型 字串
    預設值 [無]

    設定連線字串以連線至 ndb_mgmd。語法:[nodeid=id;][host=]hostname[:port]。覆寫 NDB_CONNECTSTRINGmy.cnf 中的項目。

  • --ndb-mgm-tls

    命令列格式 --ndb-mgm-tls=level
    類型 列舉
    預設值 relaxed
    有效值

    relaxed

    strict

    設定連線至管理伺服器所需的 TLS 支援層級;可以是 relaxedstrictrelaxed (預設值) 表示會嘗試 TLS 連線,但不要求成功;strict 表示必須使用 TLS 進行連線。

  • --ndb-mgmd-host

    命令列格式 --ndb-mgmd-host=connection_string
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --ndb-nodeid

    命令列格式 --ndb-nodeid=#
    類型 整數
    預設值 [無]

    設定此節點的節點 ID,覆寫 --ndb-connectstring 設定的任何 ID。

  • --ndb-optimized-node-selection

    命令列格式 --ndb-optimized-node-selection

    啟用交易節點選取的最佳化。預設為啟用;使用 --skip-ndb-optimized-node-selection 停用。

  • --ndb-tls-search-path

    命令列格式 --ndb-tls-search-path=list
    類型 路徑名稱
    預設值 (Unix) $HOME/ndb-tls
    預設值 (Windows) $HOMEDIR/ndb-tls

    指定要搜尋 CA 檔案的目錄清單。在 Unix 平台上,目錄名稱以冒號 (:) 分隔;在 Windows 系統上,使用分號字元 (;) 作為分隔符號。目錄參考可以是相對或絕對路徑;它可能包含一或多個環境變數,每個變數都以首碼的錢字符號 ($) 表示,並在使用前展開。

    搜尋會從最左邊的指定目錄開始,並從左到右進行,直到找到檔案為止。空字串表示空的搜尋路徑,這會導致所有搜尋失敗。由單個點 (.) 組成的字串表示搜尋路徑僅限於目前的工作目錄。

    如果未提供任何搜尋路徑,則會使用編譯時內建的預設值。此值取決於所使用的平台:在 Windows 上,這是 \ndb-tls;在其他平台 (包括 Linux) 上,這是 $HOME/ndb-tls。可以使用 -DWITH_NDB_TLS_SEARCH_PATH 編譯 NDB Cluster 來覆寫此值。

  • --no-asynch

    命令列格式 --no-asynch

    以單一交易中的批次形式執行資料庫作業。

  • --no-defaults

    命令列格式 --no-defaults

    不要從登入檔以外的任何選項檔讀取預設選項。

  • --no-hint

    命令列格式 --no-hint

    不要使用分散式索引鍵提示來選取資料節點。

  • --opbatch=#

    命令列格式 --opbatch=#
    類型 整數
    預設值 256
    最小值 1
    最大值 4294967295
    單位 bytes

    設定每個執行批次的作業數 (包括 blob 作業),因此設定非同步交易的數量上限。

  • --opbytes=#

    命令列格式 --opbytes=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295
    單位 bytes

    設定每個執行批次的位元組數限制。使用 0 表示沒有限制。

  • --output-type=name

    命令列格式 --output-type=name
    類型 列舉
    預設值 ndb
    有效值 null

    設定輸出類型。ndb 是預設值。null 僅用於測試。

  • --output-workers=#

    命令列格式 --output-workers=#
    類型 整數
    預設值 2
    最小值 1
    最大值 4294967295

    設定處理輸出或轉送資料庫作業的執行緒數。

  • --pagesize=#

    命令列格式 --pagesize=#
    類型 整數
    預設值 4096
    最小值 1
    最大值 4294967295
    單位 bytes

    將 I/O 緩衝區對齊到給定的大小。

  • --pagecnt=#

    命令列格式 --pagecnt=#
    類型 整數
    預設值 64
    最小值 1
    最大值 4294967295

    將 I/O 緩衝區的大小設定為頁面大小的倍數。CSV 輸入工作程序會分配大小加倍的緩衝區。

  • --polltimeout=#

    命令列格式 --polltimeout=#
    類型 整數
    預設值 1000
    最小值 1
    最大值 4294967295
    單位 毫秒

    設定每個輪詢中已完成的非同步交易的逾時時間;輪詢會持續進行,直到所有輪詢完成或發生錯誤為止。

  • --print-defaults

    命令列格式 --print-defaults

    列印程式引數清單並結束。

  • --rejects=#

    命令列格式 --rejects=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295

    限制資料載入中遭拒絕的列數(具有永久性錯誤的列)。預設值為 0,表示任何遭拒絕的列都會導致嚴重錯誤。任何導致超出限制的列都會新增至 .rej 檔案。

    此選項施加的限制在目前執行期間有效。使用 --resume 重新啟動的執行會被視為此目的的「」執行。

  • --resume

    命令列格式 --resume

    如果工作中止(由於暫時性資料庫錯誤或使用者中斷時),則從任何尚未處理的列繼續。

  • --rowbatch=#

    命令列格式 --rowbatch=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295
    單位

    設定每個列佇列的列數限制。使用 0 表示沒有限制。

  • --rowbytes=#

    命令列格式 --rowbytes=#
    類型 整數
    預設值 262144
    最小值 0
    最大值 4294967295
    單位 bytes

    設定每個列佇列的位元組數限制。使用 0 表示沒有限制。

  • --stats

    命令列格式 --stats

    將與效能和其他內部統計資料相關的選項資訊儲存在名為 *.sto*.stt 的檔案中。這些檔案在成功完成時一律會保留(即使未同時指定 --keep-state)。

  • --state-dir=name

    命令列格式 --state-dir=路徑
    類型 字串
    預設值 .

    寫入程式執行所產生的狀態檔案的位置 (tbl_name.maptbl_name.rejtbl_name.restbl_name.stt);預設值為目前目錄。

  • --table=name

    命令列格式 --table=名稱
    類型 字串
    預設值 [輸入檔案基本名稱]

    依預設,ndb_import 會嘗試將資料匯入名稱為正在讀取資料的 CSV 檔案基本名稱的資料表。您可以使用 --table 選項(簡短格式為 -t)來指定資料表名稱,以覆寫資料表名稱的選擇。

  • --tempdelay=#

    命令列格式 --tempdelay=#
    類型 整數
    預設值 10
    最小值 0
    最大值 4294967295
    單位 毫秒

    暫時性錯誤之間睡眠的毫秒數。

  • --temperrors=#

    命令列格式 --temperrors=#
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295

    每個執行批次中,由於暫時性錯誤而導致交易失敗的次數。預設值為 0,表示任何暫時性錯誤都是致命的。暫時性錯誤不會導致任何列新增至 .rej 檔案。

  • --verbose-v

    命令列格式 --verbose[=#]
    類型 Boolean
    預設值 false

    啟用詳細輸出。

  • --usage

    命令列格式 --usage

    顯示說明文字並結束;與 --help 相同。

  • --version

    命令列格式 --version

    顯示版本資訊並結束。

LOAD DATA 一樣,欄位和行格式化的選項必須與用於建立 CSV 檔案的選項相符,無論是使用 SELECT INTO ... OUTFILE 完成,還是透過其他方式完成。沒有與 LOAD DATA 陳述式 STARTING WITH 選項等效的選項。