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

8.2 json econンポ

MySQL壳8.0.13で導入されたMySQL壳JSONインポートユーティリティutil.importJSON ()を使用すると、JSONドキュメントをファイル(またはFIFO特殊ファイル)または標準入力からMySQL服务器コレクションまたはリレーショナルテーブルにインポートできます。このユーティリティは,指定されたJSONドキュメントが整形式であることをチェックしてターゲットデータベースに挿入するため,複数の插入ステトメントを使用したり,スクリプトを記述してこのタスクを実行する必要がなくなります。

MySQL壳8.0.14から,インポートユーティリティはJSONドキュメントで表されるBSON(バイナリJSON)データ型を処理できます。BSONドキュメントで使用されるデータ型はすべてJSONでネイティブにサポートされているわけではありませんが,JSON形式の拡張機能を使用して表すことができます。インポートユーティリティでは,JSON拡張を使用してBSONデータ型を表すドキュメントを処理し,それらを同一または互換性のあるMySQL表現に変換し,その表現を使用してデータ値をインポートできます。変換された結果のデータ値は,式およびインデックスで使用でき,SQLステートメントおよびX DevAPI関数で操作できます。

JSONドキュメントは,既存のテーブルまたはコレクション,またはインポート用に作成された新しいテーブルまたはコレクションにインポートできます。ターゲットのテーブルまたはコレクションが指定したデータベースに存在しない場合は,デフォルトのコレクションまたはテーブル構造を使用してユーティリティによって自動的に作成されます。デフォルトのコレクションは,模式オブジェクトからcreateCollection ()関数をコルすることで作成されます。デフォルトテブルは次のように作成されます:

创建表dbname。' tablename ' (target_column JSON, id INTEGER AUTO_INCREMENT主键)CHARSET utf8mb4引擎=InnoDB;

デフォルトのコレクション名またはテーブル名は,指定されたインポートファイルの名前(ファイル拡張子なし)で,デフォルトのtarget_column名は医生です。

BSON型のJSON拡張機能をMySQL型に変換するには,インポートユーティリティの実行時にconvertBsonTypesオプションを指定する必要があります。特定のbsonデタ型のマッピングおよび変換を制御するための追加オプションが使用可能です。BSONタイプのJSON拡張子を持つドキュメントをインポートし,このオプションを使用しない場合,ドキュメントは入力ファイルで表されるのと同じ方法でインポートされます。

Json Json的Json格式:ンポトユティリティには,サバxプロトコル接続が必要です。ユティリティは,クラシックMySQLプロトコル接続を介して動作できません。

MySQL Shell APIでは,JSON JSON格式为ンポトユティリティは跑龙套グロバルオブジェクトの関数であり,次のシグネチャを持ます:

importJSON(路径,选项)

路径は,ereplicationンポereplicationトするjsonドキュメントを含むファereplicationルのファereplicationルパスを指定する文字列です。これには,ディスクに書き込まれたファイルまたはFIFO特殊ファイル(名前付きパイプ)を指定できます。標準入力は,ユティリティの——进口コマンドラ邮箱ン起動でのみ邮箱ンポ邮箱トできます。

选项はンポトオプションのディクショナリで,空の場合は省略できます。(MySQL 8.0.14より前は,ディクショナリが必要でした)JSONドキュメントをインポートする場所と方法を指定するには,次のオプションを使用できます:

模式:“db_name

タゲットデタベスの名前。MySQL ShellはURIのような接続文字列使用\コマンドまたはMySQL壳オプションで指定されているように,現在のセッションで使用されているスキーマ名を識別して使用しようとします。スキマ名が指定されておらず,セッションから識別できない場合は,エラが返されます。

收藏:“collection_name

タゲット収集の名前。これは,テブルとカラムを指定するかわりに使用できます。コレクションが存在しない場合は,ユティリティによって作成されます。集合表格またはtableColumnのいずれのオプションも指定しない場合,ユーティリティはデフォルトで,指定されたインポートファイルの名前(ファイル拡張子なし)でターゲットコレクションを使用または作成します。

表:“table_name

タゲットテブルの名前。これは,コレクションを指定するかわりに使用できます。テブルが存在しない場合は,ユティリティによって作成されます。

tableColumn:“column_name

Json:ドキュメントがンポトされるタゲットテブルのカラムの名前。テブルがすでに存在する場合は,指定したカラムがテブルに存在する必要があります。表格オプションを指定してtableColumnオプションを省略すると,デフォルトのカラム名医生が使用されます。tableColumnオプションを指定して表格オプションを省略した場合,指定したインポートファイルの名前(ファイル拡張子なし)がテーブル名として使用されます。

convertBsonTypes:真

拡張機能を使用してjson形式に表されるbsonデ。このオプションのデフォルトはです。convertBsonTypes:真を指定すると,表現されたBSONタイプはそれぞれ同一または互換性のあるMySQL表現に変換され,その表現を使用してデータ値がインポートされます。特定のbsonデタ型のマッピングおよび変換を制御するための追加オプションが使用可能です。これらの制御オプションおよびデフォルトの型変換のリストは,セクション8.2.3 " bsonデタ型の表現の変換"を参照してください。convertBsonOidオプションも真正的に設定する必要があります。これは,convertBsonTypes:真を指定した場合のオプションのデフォルト設定です。Bson型のjson拡張子を持,convertBsonTypes:真を使用しない場合,ドキュメントは入力ファイルに埋め込まれたJSONドキュメントとして表されるのと同じ方法でインポートされます。

convertBsonOid:真

MongoDB拡張JSON厳密モドで表される,ドキュメントの_id値として使用される12バイトBSON型であるMongoDB objectidを認識および変換します。このオプションのデフォルトはconvertBsonTypesオプションの値であるため,このオプションを真正的に設定すると,MongoDB ObjectIDsも自動的に変換されます。MongoDBからデタをトする場合,MySQL Serverでは_id値をvarbinary (32)タ大帝プに変換する必要があるため,bson大帝タ大帝プを変換しない場合は,convertBsonOidを常に真正的に設定する必要があります。

extractOidTime:“field_name

ドキュメントの_idフィールドのMongoDB ObjectIDに含まれるタイムスタンプ値を認識して抽出し,インポートされたデータの別のフィールドに配置します。extractOidTimeは、タ。タ电子书阅读器ムスタンプはObjectIDの最初の4バ电子书阅读器トで,変更されません。このオプションを使用するようにconvertBsonOid:真を設定する必要があります。これは,convertBsonTypesがtrueに設定されている場合のデフォルトです。

次の例(MySQL ShellJavaScriptモードの最初の例とMySQL ShellPythonモードの次の例)では,/ tmp / products.jsonファjsonルのjsonmydbデタベスの产品コレクションに邮箱ンポ邮箱トします:

mysql-js > util.importJson(“/ tmp /产品。Json ", {schema: "mydb", collection: "products"})
mysql-py > util.import_json(“/ tmp /产品。json "{"模式”:“mydb”,“收集”:“产品”})

MySQL壳JavaScriptモードの次の例にはオプションが指定されていないため,ディクショナリは省略されます。mydbは,MySQL Shellセッションのアクティブなスキマです。したがって,ユティリティは,ファ/ tmp / stores.json内のjsonドキュメントをmydbデタベス内の商店という名前のコレクションに邮箱ンポ邮箱トします:

mysql-js> \use mydb > util.importJson("/tmp/stores.json")

MySQL ShellJavaScriptモドの次の例では,ファル/欧洲/ regions.jsonのjsonドキュメントをmydbデタベスの地区というリレショナルテブルのjsondataカラムに邮箱ンポ邮箱トします。JSON拡張によってドキュメントで表されるBSONデータ型は,MySQL表現に変換されます:

mysql-js > util.importJson(“/欧洲/地区。json", {schema: "mydb",表:"regions", tableColumn: "jsondata", convertBsonTypes: true});

MySQL ShellJavaScriptモードの次の例では,BSONデータ型のJSON表現をMySQL表現に変換せずに,同じインポートを実行します。ただし,ドキュメント内のMongoDB objectidはMySQLの要求に応じて変換され,タイムスタンプも抽出されます:

mysql-js > util.importJson(“/欧洲/地区。json", {schema: "mydb",表:"regions", tableColumn: "jsondata", convertBsonOid: true, extractOidTime: "idTime"});

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

Json的Json格式:ンポトユティリティは,コマンドラ。コマンドラ邮箱ンの起動には,2邮箱の代替形式を使用できます。ファ管理员ル(またはfifo特殊ファ管理员ル)からの入力のみを受け入れるmysqlshコマンドereplicationンタフェereplicationス,または標準入力またはファereplicationルからの入力を受け入れる——进口コマンドを使用できます。