MySQL Shell 8.0  /  ...  /  --import コマンドを使用した JSON ドキュメントのインポート

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

8.2.2 --import コマンドを使用した JSON ドキュメントのインポート

--import コマンドは、JSON インポートユーティリティのコマンドライン起動用の mysqlsh コマンドインタフェースのかわりに使用できます。 このコマンドは、オプション名を使用せずに短い形式の構文を提供し、標準入力から JSON ドキュメントを受け入れます。 構文は次のとおりです:

mysqlsh user@host:port/mydb --import <path> [target] [tableColumn] [options]

mysqlsh コマンドインタフェースと同様に、URI のような接続文字列で、または追加の --schema コマンドラインオプションを使用して、ターゲットデータベースを指定する必要があります。 --import コマンドの最初のパラメータは、インポートする JSON ドキュメントを含むファイルのファイルパスです。 標準入力から JSON ドキュメントを読み取るには、ファイルパスのかわりにダッシュ (-) を指定します。 入力ストリームの終わりは、ファイルの終わりを示すインジケータです。これは、Unix システムでは Ctrl+D、Windows システムでは Ctrl+Z です。

パス (標準入力の場合は -) を指定すると、次のパラメータはターゲットコレクションまたはテーブルの名前になります。 標準入力を使用する場合は、ターゲットを指定する必要があります。

  • 標準入力を使用し、指定したターゲットが指定したスキーマに存在するリレーショナルテーブルである場合、ドキュメントはそのテーブルにインポートされます。 カラム名を指定するパラメータをさらに指定できます。この場合、指定したカラムがインポート先に使用されます。 それ以外の場合は、既存のテーブルに存在する必要があるデフォルトのカラム名 doc が使用されます。 ターゲットが既存のテーブルでない場合、ユーティリティは指定されたターゲット名のコレクションを検索し、そこにドキュメントをインポートします。 そのようなコレクションが見つからない場合、ユーティリティは指定されたターゲット名でコレクションを作成し、そこにドキュメントをインポートします。 テーブルを作成してテーブルにインポートするには、さらにパラメータとしてカラム名を指定する必要もあります。この場合、ユーティリティは指定されたテーブル名でリレーショナルテーブルを作成し、指定されたカラムにデータをインポートします。

  • ファイルパスとターゲットを指定すると、ユーティリティは指定されたターゲット名のコレクションを検索します。 見つからない場合、ユーティリティはデフォルトでその名前のコレクションを作成し、そこにドキュメントをインポートします。 ファイルをテーブルにインポートするには、さらにパラメータとしてカラム名を指定する必要もあります。この場合、ユーティリティは既存のリレーショナルテーブルを検索してインポートするか、指定されたテーブル名でリレーショナルテーブルを作成し、指定されたカラムにデータをインポートします。

  • ファイルパスを指定し、ターゲットを指定しない場合、ユーティリティは、指定されたインポートファイルの名前 (ファイル拡張子なし) を持つ、指定されたスキーマ内の既存のコレクションを検索します。 ドキュメントが見つかった場合は、そのドキュメントにインポートされます。 指定されたインポートファイルの名前のコレクションが指定されたスキーマに見つからない場合、ユーティリティはその名前のコレクションを作成し、そのコレクションにドキュメントをインポートします。

BSON (バイナリ JSON) データ型の表現を含むドキュメントをインポートする場合は、オプション --convertBsonOid--extractOidTime=field_name--convertBsonTypes および セクション8.2.3「BSON データ型の表現の変換」 にリストされている制御オプションも指定できます。

次の例では、標準入力から JSON ドキュメントを読み取り、mydb データベースの territories という名前のターゲットにインポートします。 territories という名前のコレクションまたはテーブルが見つからない場合、ユーティリティは territories という名前のコレクションを作成し、そのコレクションにドキュメントをインポートします。 ドキュメントを作成して territories という名前のリレーショナルテーブルにインポートする場合は、さらにパラメータとしてカラム名を指定する必要があります。

mysqlsh user@localhost/mydb --import - territories

次の例では、ファイルパスとターゲットを使用して、ファイル/europe/regions.json の JSON ドキュメントを mydb データベースの regions というリレーショナルテーブルの jsondata カラムにインポートします。 スキーマ名は、URI のような接続文字列ではなく、--schema コマンドラインオプションを使用して指定します:

mysqlsh user@localhost:33062 --import /europe/regions.json regions jsondata --schema=mydb

次の例では、ファイルパスが指定されていますが、ターゲットが指定されていない場合、JSON ドキュメントがファイル/europe/regions.json にインポートされます。 指定された mydb データベースに regions という名前のコレクションまたはテーブル (拡張子のない指定されたインポートファイルの名前) が見つからない場合、ユーティリティは regions という名前のコレクションを作成し、そのコレクションにドキュメントをインポートします。 regions という名前のコレクションがすでに存在する場合、ユーティリティはそのコレクションにドキュメントをインポートします。

mysqlsh user@localhost/mydb --import /europe/regions.json

MySQL Shell は、「127.0.0.1 の MySQL Server で、ファイル/europe/regions.json"からテーブル`mydb`.`regions`にインポートしています:33062」など、インポートのパラメータを確認するメッセージを返します。

インポートが完了するか、Ctrl+C を持つユーザーまたはエラーによってインポートが途中で停止されると、正常にインポートされた JSON ドキュメントの数と該当するエラーメッセージを示すメッセージがユーザーに返されます。 インポートが正常に終了した場合はゼロが返され、エラーが発生した場合はゼロ以外の終了コードが返されます。