文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

25.5.13 ndb_import — 將 CSV 資料匯入 NDB

ndb_import 直接使用 NDB API 將 CSV 格式的資料 (例如 mysqldump --tab 所產生的資料) 匯入 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 叢集管理伺服器;因此,叢集 config.ini 檔案中必須有一個未使用的 [api] 插槽。

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

  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=path

    包含字元集的目錄。

  • --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=connection_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=名稱

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

    stopjob

    stopall

    sighup

    sigint

    list

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

  • --errins-delay=#

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

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

  • --fields-enclosed-by=字元

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

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

  • --fields-escaped-by=名稱

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

    指定跳脫字元的方式與 SQL LOAD DATA 陳述式的 FIELDS ESCAPED BY 選項相同。

  • --fields-optionally-enclosed-by=字元

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

    其運作方式與 LOAD DATA 陳述式的 FIELDS OPTIONALLY ENCLOSED BY 選項相同,指定一個要解譯為選擇性引述欄位值的字元。對於 CSV 輸入,這與 --fields-enclosed-by 相同。

  • --fields-terminated-by=字元

    命令列格式 --fields-terminated-by=字元
    類型 字串
    預設值 \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=名稱

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

    random

    csv

    設定輸入類型。預設值為 csvrandom 僅用於測試目的。

  • --input-workers=#

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

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

  • --keep-state

    命令列格式 --keep-state

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

  • --lines-terminated-by=名稱

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

    其運作方式與 LOAD DATA 陳述式的 LINES TERMINATED BY 選項相同,指定一個要解譯為行尾的字元。

  • --log-level=#

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

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

    僅在 NDB 的偵錯版本中,可以使用此選項將記錄層級設定為最大 4。

  • --login-path

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

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

  • --no-login-paths

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

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

  • --max-rows=#

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

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

  • --missing-ai-column

    命令列格式 --missing-ai-column='名稱'
    類型 布林值
    預設值 FALSE

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

  • --monitor=#

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

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

  • --ndb-connectstring

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

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

  • --ndb-mgm-tls

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

    relaxed

    strict

    設定連線到管理伺服器所需的 TLS 支援層級;relaxedstrict 其中之一。relaxed (預設值) 表示會嘗試 TLS 連線,但不需要成功;strict 表示需要 TLS 才能連線。

  • --ndb-mgmd-host

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

    --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=清單
    類型 路徑名稱
    預設值 (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
    單位 位元組

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

  • --opbytes=#

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

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

  • --output-type=name

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

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

  • --output-workers=#

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

    設定處理輸出或轉發資料庫操作的執行緒數量。

  • --pagesize=#

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

    將 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
    單位 rows

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

  • --rowbytes=#

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

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

  • --stats

    命令列格式 --stats

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

  • --state-dir=name

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

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

  • --table=name

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

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

  • --tempdelay=#

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

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

  • --temperrors=#

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

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

  • --verbose, -v

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

    啟用詳細輸出。

  • --usage

    命令列格式 --usage

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

  • --version

    命令列格式 --version

    顯示版本資訊並結束。

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