MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

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)


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

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