ndb_import は NDB API
を使用して、mysqldump
--tab
によって生成された CSV 形式のデータなどを
NDB
に直接インポートします。ndb_import
が機能するには NDB 管理サーバー
(ndb_mgmd)
への接続が必要です。MySQL Server
への接続は必要ありません。
使用法
ndb_import db_name file_name options
ndb_import には、2
つの引数が必要です。db_name
は、データのインポート先のテーブルが見つかったデータベースの名前です。file_name
は、データの読取り元の CSV
ファイルの名前です。現在のディレクトリにない場合は、このファイルへのパスを含める必要があります。
ファイルの名前はテーブルの名前と一致する必要があります。ファイル拡張子がある場合は考慮されません。
ndb_import
でサポートされているオプションには、フィールドセパレータ、エスケープおよび行終了記号を指定するオプションが含まれます。これらのオプションについては、このセクションの後半で説明します。ndb_import
は NDB Cluster
管理サーバーに接続できる必要があります。このため、クラスタ
config.ini
ファイルに未使用の[api]
スロットが存在する必要があります。
InnoDB
などの別のストレージエンジンを使用する既存のテーブルを
NDB
テーブルとして複製するには、mysql
クライアントを使用して
SELECT INTO
OUTFILE
ステートメントを実行し、既存のテーブルを CSV
ファイルにエクスポートしてから
CREATE TABLE
LIKE
ステートメントを実行して、既存のテーブルと同じ構造を持つ新しいテーブルを作成し、新しいテーブルで
ALTER TABLE ...
ENGINE=NDB
を実行します。その後、システムシェルから
ndb_import を呼び出して、新しい
NDB
テーブルにデータをロードします。
たとえば、myinnodb
というデータベース内の
myinnodb_table
という名前の既存の
InnoDB
テーブルを、次に示すように myndb
という名前のデータベース内の
myndb_table
という名前の
NDB
テーブルにエクスポートできます
(適切な権限を持つ MySQL
ユーザーとしてすでにログインしていることを前提としています):
-
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 shell>
ターゲットデータベースおよびテーブルが作成されると、実行中の mysqld は不要になります。 必要に応じて、続行する前に mysqladmin shutdown または別の方法を使用して停止できます。
-
システムシェルで、次の手順を実行します:
# if you are not already in the MySQL bin directory: shell> cd path-to-mysql-bin-dir shell> 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 shell>
次のテーブルに、ndb_import に固有のオプションを示します。 追加説明が表のあとにあります。 ほとんどの NDB Cluster プログラム (ndb_import を含む) に共通のオプションについては、セクション23.4.32「NDB Cluster プログラムに共通のオプション — NDB Cluster プログラムに共通のオプション」 を参照してください。
表 23.35 プログラムで使用されるコマンドライン・オプション ndb_import
形式 | 説明 | 追加、非推奨、または削除された |
---|---|---|
致命的なエラー時にコアをダンプします。デバッグに使用されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
PK が非表示のテーブルの場合は、自動増分を指定します。 mysqld を参照 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
PK が非表示のテーブルの場合は、自動増分オフセットを指定します。 mysqld を参照 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
PK が非表示のテーブルの場合は、プリフェッチされる自動インクリメント値の数を指定します。 mysqld を参照 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
作成するクラスタ接続の数 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ジョブが失敗した場合は、次のジョブに進みます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データベース操作を実行しているスレッド数 (データノード当たり) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
テスト用の挿入タイプでエラーが発生しました。使用可能なすべての値を取得するには\"list\"を使用 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
エラー挿入遅延 (ミリ秒)。ランダムな変動が追加されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
LOAD DATA ステートメントの「FIELDS ENCLOSED BY」オプションと同じです。 CSV 入力の場合、これは --fields-optionally-enclosed-by の使用と同じです | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
LOAD DATA ステートメントの「FIELDS ESCAPED BY」オプションと同じ | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
LOAD DATA ステートメントの「FIELDS OPTIONALLY ENCLOSED BY」オプションと同じ | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
LOAD DATA ステートメントの「FIELDS TERMINATED BY」オプションと同じ | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
これ以上の処理を待機するスリープ時間 (ミリ秒) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
アイドル状態になる前に再試行する回数 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
入力ファイルの最初の#行を無視します。 データ以外のヘッダーをスキップするために使用 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
入力タイプ: random または csv | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
入力を処理するスレッドの数。 --input-type が csv の場合は 2 以上である必要があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
状態ファイル (空でない *.rej ファイルを除く) は、通常、ジョブの完了時に削除されます。 このオプションを使用すると、かわりにすべての状態ファイルが保持されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
LOAD DATA ステートメントの「LINES TERMINATED BY」オプションと同じ | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
この数の入力データ行のみをインポートします。デフォルトは 0 で、すべての行がインポートされます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
何かが変更された場合 (ステータス、拒否された行、一時エラー)、実行中のジョブのステータスを定期的に印刷します。 値 0 は無効になります。 値 1 は、表示された変更をすべて出力します。 値を大きくすると、事前定義された制限までステータス出力が指数関数的に減少 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
単一トランザクションでのバッチとしてのデータベース操作の実行 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
分散キーヒントを使用してデータノード (TC) を選択しない | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
db 実行バッチは、NDB カーネルに送信される一連のトランザクションおよび操作です。 このオプションは、db 実行バッチ内の NDB 操作 (blob 操作を含む) を制限します。 したがって、非同期トランザクションの数も制限されます。 値 0 は無効です | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
実行バッチのバイト数の制限 (デフォルトは 0 = 制限なし) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
出力タイプ: ndb はデフォルトで、null がテストに使用されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
出力またはリレーデータベース操作を処理するスレッドの数 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
I/O バッファを指定されたサイズに整列 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ページサイズの倍数としての I/O バッファのサイズ。 CSV 入力ワーカーがダブルサイズのバッファを割り当てます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
完了した非同期トランザクションのポーリング当たりのタイムアウト。ポーリングは、すべてのポーリングが完了するか、エラーが発生するまで続行されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データロードで拒否される行 (永続エラーのある行) の数を制限します。 デフォルトは 0 で、拒否された行によって致命的エラーが発生することを意味します。 制限を超える行も *.rej に追加されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ジョブが中断された場合 (一時エラー、ユーザー割込み)、まだ処理されていない行で再開 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
行キューの行を制限します (デフォルトは 0 = 無制限)。--input-type がランダムの場合は 1 以上にする必要があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
行キュー内のバイト数の制限 (0 = 制限なし) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
状態ファイルを書き込む場所。デフォルトは currect ディレクトリです | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
パフォーマンス関連のオプションおよび内部統計を *.sto および *.stt ファイルに保存します。 これらのファイルは、--keep-state が使用されていない場合でも正常終了時に保持されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
一時エラー間でスリープするミリ秒数 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
実行バッチごとに、一時エラーが原因でトランザクションが失敗できる回数。0 は、一時エラーが致命的であることを意味します。 このようなエラーによって .rej ファイルに行が書き込まれることはありません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
詳細出力の有効化 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
-
コマンド行形式 --abort-on-error
型 Boolean デフォルト値 FALSE
致命的エラー時にコアをダンプします。デバッグにのみ使用されます。
-
コマンド行形式 --ai-increment=#
型 Integer デフォルト値 1
最小値 1
最大値 4294967295
非表示の主キーを持つテーブルの場合は、
auto_increment_increment
システム変数が MySQL Server で行うように、自動増分を指定します。 -
コマンド行形式 --ai-offset=#
型 Integer デフォルト値 1
最小値 1
最大値 4294967295
非表示の主キーを持つテーブルの場合は、自動増分オフセットを指定します。
auto_increment_offset
システム変数に似ています。 -
コマンド行形式 --ai-prefetch-sz=#
型 Integer デフォルト値 1024
最小値 1
最大値 4294967295
非表示の主キーを持つテーブルの場合は、プリフェッチされる自動増分値の数を指定します。 MySQL Server での
ndb_autoincrement_prefetch_sz
システム変数と同様に動作します。 -
コマンド行形式 --connections=#
型 Integer デフォルト値 1
最小値 1
最大値 4294967295
作成するクラスタ接続の数。
-
コマンド行形式 --continue
型 Boolean デフォルト値 FALSE
ジョブが失敗した場合は、次のジョブに進みます。
-
コマンド行形式 --db-workers=#
型 Integer デフォルト値 4
最小値 1
最大値 4294967295
データベース操作を実行しているスレッド数 (データノード当たり)。
-
コマンド行形式 --errins-type=name
型 列挙 デフォルト値 [none]
有効な値 stopjob
stopall
sighup
sigint
list
挿入タイプでエラーが発生しました。使用可能なすべての値を取得するには、
name
値としてlist
を使用します。 このオプションは、テスト目的でのみ使用されます。 -
コマンド行形式 --errins-delay=#
型 Integer デフォルト値 1000
最小値 0
最大値 4294967295
単位 ms
エラー挿入遅延 (ミリ秒)。ランダムなバリエーションが追加されます。 このオプションは、テスト目的でのみ使用されます。
-
コマンド行形式 --fields-enclosed-by=char
型 文字列 デフォルト値 [none]
これは、
LOAD DATA
ステートメントのFIELDS ENCLOSED BY
オプションと同様に機能し、フィールド値を引用符で囲む文字を指定します。 CSV 入力の場合、これは--fields-optionally-enclosed-by
と同じです。 -
コマンド行形式 --fields-escaped-by=name
型 文字列 デフォルト値 \
SQL
LOAD DATA
ステートメントのFIELDS ESCAPED BY
オプションと同じ方法でエスケープ文字を指定します。 -
--fields-optionally-enclosed-by
=char
コマンド行形式 --fields-optionally-enclosed-by=char
型 文字列 デフォルト値 [none]
これは、
LOAD DATA
ステートメントのFIELDS OPTIONALLY ENCLOSED BY
オプションと同様に機能し、オプションでフィールド値を引用符で囲んだ文字を指定します。 CSV 入力の場合、これは--fields-enclosed-by
と同じです。 -
コマンド行形式 --fields-terminated-by=char
型 文字列 デフォルト値 \t
これは、
LOAD DATA
ステートメントのFIELDS TERMINATED BY
オプションと同様に機能し、インターペットする文字をフィールドセパレータとして指定します。 -
コマンド行形式 --idlesleep=#
型 Integer デフォルト値 1
最小値 1
最大値 4294967295
単位 ms
これ以上の作業の実行を待機するスリープ時間 (ミリ秒)。
-
コマンド行形式 --idlespin=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
スリープする前に再試行する回数。
-
コマンド行形式 --ignore-lines=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
ndb_import が入力ファイルの最初の
#
行を無視するようにします。 これは、データを含まないファイルヘッダーをスキップするために使用できます。 -
コマンド行形式 --input-type=name
型 列挙 デフォルト値 csv
有効な値 random
csv
入力タイプのタイプを設定します。 デフォルトは
csv
です。random
はテストのみを目的としています。 -
コマンド行形式 --input-workers=#
型 Integer デフォルト値 4
最小値 1
最大値 4294967295
入力を処理するスレッドの数を設定します。
-
コマンド行形式 --keep-state
型 Boolean デフォルト値 false
デフォルトでは、ndb_import はジョブの完了時にすべての状態ファイル (空でない
*.rej
ファイルを除く) を削除します。 プログラムですべての状態ファイルを強制的に保持するには、このオプション (または引数は必須) を指定します。 -
コマンド行形式 --lines-terminated-by=name
型 文字列 デフォルト値 \n
これは、
LOAD DATA
ステートメントのLINES TERMINATED BY
オプションと同様に機能し、インターペットする文字を行末として指定します。 -
コマンド行形式 --log-level=#
型 Integer デフォルト値 0
最小値 0
最大値 2
指定されたレベルで内部ロギングを実行します。 このオプションは、主に内部および開発での使用を目的としています。
NDB のデバッグビルドでのみ、このオプションを使用してロギングレベルを最大 4 に設定できます。
-
コマンド行形式 --max-rows=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
単位 bytes
この数の入力データ行のみをインポートします。デフォルトは 0 で、すべての行がインポートされます。
-
コマンド行形式 --monitor=#
型 Integer デフォルト値 2
最小値 0
最大値 4294967295
単位 bytes
なんらかの変更 (ステータス、拒否された行、一時エラー) があった場合は、実行中のジョブのステータスを定期的に出力します。 このレポートを無効にするには、0 に設定します。 1 に設定すると、表示される変更が印刷されます。 値を大きくすると、このステータスレポートの頻度が低くなります。
-
コマンド行形式 --no-asynch
型 Boolean デフォルト値 FALSE
単一のトランザクションでバッチとしてデータベース操作を実行します。
-
コマンド行形式 --no-hint
型 Boolean デフォルト値 FALSE
分散キーのヒントを使用してデータノードを選択しないでください。
-
コマンド行形式 --opbatch=#
型 Integer デフォルト値 256
最小値 1
最大値 4294967295
単位 bytes
実行バッチごとの操作数 (blob 操作を含む) および非同期トランザクション数の制限を設定します。
-
コマンド行形式 --opbytes=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
単位 bytes
実行バッチ当たりのバイト数の制限を設定します。 無制限の場合は 0 を使用します。
-
コマンド行形式 --output-type=name
型 列挙 デフォルト値 ndb
有効な値 null
出力タイプを設定します。
ndb
がデフォルトです。null
はテストにのみ使用されます。 -
コマンド行形式 --output-workers=#
型 Integer デフォルト値 2
最小値 1
最大値 4294967295
出力またはリレーデータベース操作を処理するスレッドの数を設定します。
-
コマンド行形式 --pagesize=#
型 Integer デフォルト値 4096
最小値 1
最大値 4294967295
単位 bytes
I/O バッファを指定されたサイズに位置合せします。
-
コマンド行形式 --pagecnt=#
型 Integer デフォルト値 64
最小値 1
最大値 4294967295
I/O バッファのサイズをページサイズの倍数として設定します。 CSV 入力ワーカーは、サイズが倍増したバッファを割り当てます。
-
コマンド行形式 --polltimeout=#
型 Integer デフォルト値 1000
最小値 1
最大値 4294967295
単位 ms
完了した非同期トランザクションのポーリングごとにタイムアウトを設定します。ポーリングは、すべてのポーリングが完了するか、エラーが発生するまで続行されます。
-
コマンド行形式 --rejects=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
データロードで拒否される行 (永続エラーのある行) の数を制限します。 デフォルトは 0 で、拒否された行によって致命的エラーが発生することを意味します。 制限を超える原因となった行は、
.rej
ファイルに追加されます。このオプションによって課される制限は、現在の実行中に有効です。
--resume
を使用して再起動された実行は、この目的では 「new」 の実行とみなされます。 -
コマンド行形式 --resume
型 Boolean デフォルト値 FALSE
ジョブが中断された場合 (一時 DB エラーまたはユーザーによる割込みが原因)、まだ処理されていない行で再開します。
-
コマンド行形式 --rowbatch=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
単位 rows
行キューごとの行数の制限を設定します。 無制限の場合は 0 を使用します。
-
コマンド行形式 --rowbytes=#
型 Integer デフォルト値 262144
最小値 0
最大値 4294967295
単位 bytes
行キュー当たりのバイト数の制限を設定します。 無制限の場合は 0 を使用します。
-
コマンド行形式 --stats
型 Boolean デフォルト値 false
パフォーマンスおよびその他の内部統計に関連するオプションに関する情報を、
*.sto
および*.stt
という名前のファイルに保存します。 これらのファイルは、(--keep-state
も指定されていない場合でも) 正常終了時に常に保持されます。 -
コマンド行形式 --state-dir=name
型 文字列 デフォルト値 .
プログラムの実行によって生成された状態ファイル (
、tbl_name
.map
、tbl_name
.rej
およびtbl_name
.res
) を書き込む場所。デフォルトは現在のディレクトリです。tbl_name
.stt -
コマンド行形式 --tempdelay=#
型 Integer デフォルト値 10
最小値 0
最大値 4294967295
単位 ms
一時エラー間でスリープするミリ秒数。
-
コマンド行形式 --temperrors=#
型 Integer デフォルト値 0
最小値 0
最大値 4294967295
実行バッチごとに、一時エラーが原因でトランザクションが失敗する可能性がある回数。 デフォルトは 0 で、これは一時エラーが致命的であることを意味します。 一時エラーにより、
.rej
ファイルに行が追加されることはありません。 -
コマンド行形式 --verbose
型 Boolean デフォルト値 false
冗長出力を有効にします。
LOAD DATA
と同様に、フィールドおよび行の書式設定のオプションは、CSV
ファイルの作成に使用されたオプションと、SELECT
INTO ... OUTFILE
を使用して実行されたか他の方法で実行されたかにかかわらず、ほとんど一致します。
LOAD DATA
ステートメントの STARTING WITH
オプションと同等のものはありません。
ndb_import は NDB 7.6.2 で追加されました。