MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  ndb_import — NDB への CSV データのインポート

23.4.13 ndb_import — NDB への CSV データのインポート

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 ユーザーとしてすでにログインしていることを前提としています):

  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
    shell>

    ターゲットデータベースおよびテーブルが作成されると、実行中の mysqld は不要になります。 必要に応じて、続行する前に mysqladmin shutdown または別の方法を使用して停止できます。

  2. システムシェルで、次の手順を実行します:

    # 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

形式 説明 追加、非推奨、または削除された

--abort-on-error

致命的なエラー時にコアをダンプします。デバッグに使用されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--ai-increment=#

PK が非表示のテーブルの場合は、自動増分を指定します。 mysqld を参照

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--ai-offset=#

PK が非表示のテーブルの場合は、自動増分オフセットを指定します。 mysqld を参照

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--ai-prefetch-sz=#

PK が非表示のテーブルの場合は、プリフェッチされる自動インクリメント値の数を指定します。 mysqld を参照

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--connections=#

作成するクラスタ接続の数

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--continue

ジョブが失敗した場合は、次のジョブに進みます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--db-workers=#

データベース操作を実行しているスレッド数 (データノード当たり)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--errins-type=name

テスト用の挿入タイプでエラーが発生しました。使用可能なすべての値を取得するには\"list\"を使用

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--errins-delay=#

エラー挿入遅延 (ミリ秒)。ランダムな変動が追加されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-enclosed-by=char

LOAD DATA ステートメントの「FIELDS ENCLOSED BY」オプションと同じです。 CSV 入力の場合、これは --fields-optionally-enclosed-by の使用と同じです

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-escaped-by=name

LOAD DATA ステートメントの「FIELDS ESCAPED BY」オプションと同じ

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-optionally-enclosed-by=char

LOAD DATA ステートメントの「FIELDS OPTIONALLY ENCLOSED BY」オプションと同じ

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-terminated-by=char

LOAD DATA ステートメントの「FIELDS TERMINATED BY」オプションと同じ

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--idlesleep=#

これ以上の処理を待機するスリープ時間 (ミリ秒)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--idlespin=#

アイドル状態になる前に再試行する回数

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--ignore-lines=#

入力ファイルの最初の#行を無視します。 データ以外のヘッダーをスキップするために使用

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--input-type=name

入力タイプ: random または csv

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--input-workers=#

入力を処理するスレッドの数。 --input-type が csv の場合は 2 以上である必要があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--keep-state

状態ファイル (空でない *.rej ファイルを除く) は、通常、ジョブの完了時に削除されます。 このオプションを使用すると、かわりにすべての状態ファイルが保持されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--lines-terminated-by=name

LOAD DATA ステートメントの「LINES TERMINATED BY」オプションと同じ

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--max-rows=#

この数の入力データ行のみをインポートします。デフォルトは 0 で、すべての行がインポートされます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--monitor=#

何かが変更された場合 (ステータス、拒否された行、一時エラー)、実行中のジョブのステータスを定期的に印刷します。 値 0 は無効になります。 値 1 は、表示された変更をすべて出力します。 値を大きくすると、事前定義された制限までステータス出力が指数関数的に減少

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--no-asynch

単一トランザクションでのバッチとしてのデータベース操作の実行

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--no-hint

分散キーヒントを使用してデータノード (TC) を選択しない

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--opbatch=#

db 実行バッチは、NDB カーネルに送信される一連のトランザクションおよび操作です。 このオプションは、db 実行バッチ内の NDB 操作 (blob 操作を含む) を制限します。 したがって、非同期トランザクションの数も制限されます。 値 0 は無効です

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--opbytes=#

実行バッチのバイト数の制限 (デフォルトは 0 = 制限なし)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--output-type=name

出力タイプ: ndb はデフォルトで、null がテストに使用されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--output-workers=#

出力またはリレーデータベース操作を処理するスレッドの数

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--pagesize=#

I/O バッファを指定されたサイズに整列

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--pagecnt=#

ページサイズの倍数としての I/O バッファのサイズ。 CSV 入力ワーカーがダブルサイズのバッファを割り当てます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--polltimeout=#

完了した非同期トランザクションのポーリング当たりのタイムアウト。ポーリングは、すべてのポーリングが完了するか、エラーが発生するまで続行されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--rejects=#

データロードで拒否される行 (永続エラーのある行) の数を制限します。 デフォルトは 0 で、拒否された行によって致命的エラーが発生することを意味します。 制限を超える行も *.rej に追加されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--resume

ジョブが中断された場合 (一時エラー、ユーザー割込み)、まだ処理されていない行で再開

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--rowbatch=#

行キューの行を制限します (デフォルトは 0 = 無制限)。--input-type がランダムの場合は 1 以上にする必要があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--rowbytes=#

行キュー内のバイト数の制限 (0 = 制限なし)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--state-dir=name

状態ファイルを書き込む場所。デフォルトは currect ディレクトリです

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--stats

パフォーマンス関連のオプションおよび内部統計を *.sto および *.stt ファイルに保存します。 これらのファイルは、--keep-state が使用されていない場合でも正常終了時に保持されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--tempdelay=#

一時エラー間でスリープするミリ秒数

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--temperrors=#

実行バッチごとに、一時エラーが原因でトランザクションが失敗できる回数。0 は、一時エラーが致命的であることを意味します。 このようなエラーによって .rej ファイルに行が書き込まれることはありません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--verbose,

-v

詳細出力の有効化

(MySQLに基づくすべてのNDBリリースでサポート 8.0)


  • --abort-on-error

    コマンド行形式 --abort-on-error
    Boolean
    デフォルト値 FALSE

    致命的エラー時にコアをダンプします。デバッグにのみ使用されます。

  • --ai-increment=#

    コマンド行形式 --ai-increment=#
    Integer
    デフォルト値 1
    最小値 1
    最大値 4294967295

    非表示の主キーを持つテーブルの場合は、auto_increment_increment システム変数が MySQL Server で行うように、自動増分を指定します。

  • --ai-offset=#

    コマンド行形式 --ai-offset=#
    Integer
    デフォルト値 1
    最小値 1
    最大値 4294967295

    非表示の主キーを持つテーブルの場合は、自動増分オフセットを指定します。 auto_increment_offset システム変数に似ています。

  • --ai-prefetch-sz=#

    コマンド行形式 --ai-prefetch-sz=#
    Integer
    デフォルト値 1024
    最小値 1
    最大値 4294967295

    非表示の主キーを持つテーブルの場合は、プリフェッチされる自動増分値の数を指定します。 MySQL Server での ndb_autoincrement_prefetch_sz システム変数と同様に動作します。

  • --connections=#

    コマンド行形式 --connections=#
    Integer
    デフォルト値 1
    最小値 1
    最大値 4294967295

    作成するクラスタ接続の数。

  • --continue

    コマンド行形式 --continue
    Boolean
    デフォルト値 FALSE

    ジョブが失敗した場合は、次のジョブに進みます。

  • --db-workers=#

    コマンド行形式 --db-workers=#
    Integer
    デフォルト値 4
    最小値 1
    最大値 4294967295

    データベース操作を実行しているスレッド数 (データノード当たり)。

  • --errins-type=name

    コマンド行形式 --errins-type=name
    列挙
    デフォルト値 [none]
    有効な値

    stopjob

    stopall

    sighup

    sigint

    list

    挿入タイプでエラーが発生しました。使用可能なすべての値を取得するには、name 値として list を使用します。 このオプションは、テスト目的でのみ使用されます。

  • --errins-delay=#

    コマンド行形式 --errins-delay=#
    Integer
    デフォルト値 1000
    最小値 0
    最大値 4294967295
    単位 ms

    エラー挿入遅延 (ミリ秒)。ランダムなバリエーションが追加されます。 このオプションは、テスト目的でのみ使用されます。

  • --fields-enclosed-by=char

    コマンド行形式 --fields-enclosed-by=char
    文字列
    デフォルト値 [none]

    これは、LOAD DATA ステートメントの FIELDS ENCLOSED BY オプションと同様に機能し、フィールド値を引用符で囲む文字を指定します。 CSV 入力の場合、これは --fields-optionally-enclosed-by と同じです。

  • --fields-escaped-by=name

    コマンド行形式 --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

    コマンド行形式 --fields-terminated-by=char
    文字列
    デフォルト値 \t

    これは、LOAD DATA ステートメントの FIELDS TERMINATED BY オプションと同様に機能し、インターペットする文字をフィールドセパレータとして指定します。

  • --idlesleep=#

    コマンド行形式 --idlesleep=#
    Integer
    デフォルト値 1
    最小値 1
    最大値 4294967295
    単位 ms

    これ以上の作業の実行を待機するスリープ時間 (ミリ秒)。

  • --idlespin=#

    コマンド行形式 --idlespin=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295

    スリープする前に再試行する回数。

  • --ignore-lines=#

    コマンド行形式 --ignore-lines=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295

    ndb_import が入力ファイルの最初の#行を無視するようにします。 これは、データを含まないファイルヘッダーをスキップするために使用できます。

  • --input-type=name

    コマンド行形式 --input-type=name
    列挙
    デフォルト値 csv
    有効な値

    random

    csv

    入力タイプのタイプを設定します。 デフォルトは csv です。random はテストのみを目的としています。

  • --input-workers=#

    コマンド行形式 --input-workers=#
    Integer
    デフォルト値 4
    最小値 1
    最大値 4294967295

    入力を処理するスレッドの数を設定します。

  • --keep-state

    コマンド行形式 --keep-state
    Boolean
    デフォルト値 false

    デフォルトでは、ndb_import はジョブの完了時にすべての状態ファイル (空でない *.rej ファイルを除く) を削除します。 プログラムですべての状態ファイルを強制的に保持するには、このオプション (または引数は必須) を指定します。

  • --lines-terminated-by=name

    コマンド行形式 --lines-terminated-by=name
    文字列
    デフォルト値 \n

    これは、LOAD DATA ステートメントの LINES TERMINATED BY オプションと同様に機能し、インターペットする文字を行末として指定します。

  • --log-level=#

    コマンド行形式 --log-level=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 2

    指定されたレベルで内部ロギングを実行します。 このオプションは、主に内部および開発での使用を目的としています。

    NDB のデバッグビルドでのみ、このオプションを使用してロギングレベルを最大 4 に設定できます。

  • --max-rows=#

    コマンド行形式 --max-rows=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295
    単位 bytes

    この数の入力データ行のみをインポートします。デフォルトは 0 で、すべての行がインポートされます。

  • --monitor=#

    コマンド行形式 --monitor=#
    Integer
    デフォルト値 2
    最小値 0
    最大値 4294967295
    単位 bytes

    なんらかの変更 (ステータス、拒否された行、一時エラー) があった場合は、実行中のジョブのステータスを定期的に出力します。 このレポートを無効にするには、0 に設定します。 1 に設定すると、表示される変更が印刷されます。 値を大きくすると、このステータスレポートの頻度が低くなります。

  • --no-asynch

    コマンド行形式 --no-asynch
    Boolean
    デフォルト値 FALSE

    単一のトランザクションでバッチとしてデータベース操作を実行します。

  • --no-hint

    コマンド行形式 --no-hint
    Boolean
    デフォルト値 FALSE

    分散キーのヒントを使用してデータノードを選択しないでください。

  • --opbatch=#

    コマンド行形式 --opbatch=#
    Integer
    デフォルト値 256
    最小値 1
    最大値 4294967295
    単位 bytes

    実行バッチごとの操作数 (blob 操作を含む) および非同期トランザクション数の制限を設定します。

  • --opbytes=#

    コマンド行形式 --opbytes=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295
    単位 bytes

    実行バッチ当たりのバイト数の制限を設定します。 無制限の場合は 0 を使用します。

  • --output-type=name

    コマンド行形式 --output-type=name
    列挙
    デフォルト値 ndb
    有効な値 null

    出力タイプを設定します。ndb がデフォルトです。null はテストにのみ使用されます。

  • --output-workers=#

    コマンド行形式 --output-workers=#
    Integer
    デフォルト値 2
    最小値 1
    最大値 4294967295

    出力またはリレーデータベース操作を処理するスレッドの数を設定します。

  • --pagesize=#

    コマンド行形式 --pagesize=#
    Integer
    デフォルト値 4096
    最小値 1
    最大値 4294967295
    単位 bytes

    I/O バッファを指定されたサイズに位置合せします。

  • --pagecnt=#

    コマンド行形式 --pagecnt=#
    Integer
    デフォルト値 64
    最小値 1
    最大値 4294967295

    I/O バッファのサイズをページサイズの倍数として設定します。 CSV 入力ワーカーは、サイズが倍増したバッファを割り当てます。

  • --polltimeout=#

    コマンド行形式 --polltimeout=#
    Integer
    デフォルト値 1000
    最小値 1
    最大値 4294967295
    単位 ms

    完了した非同期トランザクションのポーリングごとにタイムアウトを設定します。ポーリングは、すべてのポーリングが完了するか、エラーが発生するまで続行されます。

  • --rejects=#

    コマンド行形式 --rejects=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295

    データロードで拒否される行 (永続エラーのある行) の数を制限します。 デフォルトは 0 で、拒否された行によって致命的エラーが発生することを意味します。 制限を超える原因となった行は、.rej ファイルに追加されます。

    このオプションによって課される制限は、現在の実行中に有効です。 --resume を使用して再起動された実行は、この目的では new の実行とみなされます。

  • --resume

    コマンド行形式 --resume
    Boolean
    デフォルト値 FALSE

    ジョブが中断された場合 (一時 DB エラーまたはユーザーによる割込みが原因)、まだ処理されていない行で再開します。

  • --rowbatch=#

    コマンド行形式 --rowbatch=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295
    単位 rows

    行キューごとの行数の制限を設定します。 無制限の場合は 0 を使用します。

  • --rowbytes=#

    コマンド行形式 --rowbytes=#
    Integer
    デフォルト値 262144
    最小値 0
    最大値 4294967295
    単位 bytes

    行キュー当たりのバイト数の制限を設定します。 無制限の場合は 0 を使用します。

  • --stats

    コマンド行形式 --stats
    Boolean
    デフォルト値 false

    パフォーマンスおよびその他の内部統計に関連するオプションに関する情報を、*.sto および *.stt という名前のファイルに保存します。 これらのファイルは、(--keep-state も指定されていない場合でも) 正常終了時に常に保持されます。

  • --state-dir=name

    コマンド行形式 --state-dir=name
    文字列
    デフォルト値 .

    プログラムの実行によって生成された状態ファイル (tbl_name.maptbl_name.rejtbl_name.res および tbl_name.stt) を書き込む場所。デフォルトは現在のディレクトリです。

  • --tempdelay=#

    コマンド行形式 --tempdelay=#
    Integer
    デフォルト値 10
    最小値 0
    最大値 4294967295
    単位 ms

    一時エラー間でスリープするミリ秒数。

  • --temperrors=#

    コマンド行形式 --temperrors=#
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295

    実行バッチごとに、一時エラーが原因でトランザクションが失敗する可能性がある回数。 デフォルトは 0 で、これは一時エラーが致命的であることを意味します。 一時エラーにより、.rej ファイルに行が追加されることはありません。

  • --verbose, -v

    コマンド行形式 --verbose
    Boolean
    デフォルト値 false

    冗長出力を有効にします。

LOAD DATA と同様に、フィールドおよび行の書式設定のオプションは、CSV ファイルの作成に使用されたオプションと、SELECT INTO ... OUTFILE を使用して実行されたか他の方法で実行されたかにかかわらず、ほとんど一致します。 LOAD DATA ステートメントの STARTING WITH オプションと同等のものはありません。

ndb_import は NDB 7.6.2 で追加されました。


関連キーワード:  NDB, テーブル, ndbinfo, ndb, サポート, コマンド, 形式, リリース, 実行, エラー