MySQL Shell 8.0/.../ 使用——import命令导入JSON文档

8.2.2使用——import命令导入JSON文档

——进口命令可作为mysqlshJSON导入实用程序的命令行调用的命令接口。该命令提供了一个不使用选项名称的短表单语法,并且它接受来自标准输入的JSON文档。语法如下:

mysqlsh user@host:port/mydb——import  [target] [tableColumn] [options]

就像mysqlsh命令接口时,必须在类似uri的连接字符串中指定目标数据库,或者使用附加的——模式命令行选项。的第一个参数——进口命令是包含要导入的JSON文档的文件路径。要从标准输入读取JSON文档,请指定破折号(-)而不是文件路径。输入流的末尾是文件结束指示符,即Ctrl + D在Unix系统及Ctrl + Z在Windows系统上。

在指定路径(或-对于标准输入),下一个参数是目标集合或表的名称。如果使用标准输入,则必须指定目标。

  • 如果使用标准输入,并且指定的目标是存在于指定模式中的关系表,则文档将被导入其中。您可以进一步指定一个提供列名的参数,在这种情况下,指定的列用于导入目标。否则为默认列名医生的值,该值必须存在于现有表中。如果目标不是现有表,该实用程序将搜索具有指定目标名称的任何集合,并将文档导入其中。如果没有找到这样的集合,该实用程序将创建一个具有指定目标名称的集合,并将文档导入其中。要创建和导入表,还必须指定列名作为进一步的参数,在这种情况下,实用程序使用指定的表名创建关系表,并将数据导入到指定的列。

  • 如果指定文件路径和目标,该实用程序将搜索具有指定目标名称的任何集合。如果没有找到,该实用程序默认创建一个具有该名称的集合,并将文档导入其中。要将文件导入到表中,还必须指定列名作为进一步的参数,在这种情况下,实用程序将搜索现有关系表并导入到其中,或者使用指定的表名创建关系表并将数据导入到指定的列中。

  • 如果指定了文件路径但没有指定目标,该实用程序将在指定的模式中搜索具有所提供导入文件名称(不包含文件扩展名)的任何现有集合。如果找到一个,则将文档导入其中。如果在指定的模式中找不到具有所提供的导入文件名称的集合,该实用程序将创建一个具有该名称的集合,并将文档导入其中。

如果要导入包含BSON(二进制JSON)数据类型表示的文档,还可以指定这些选项——convertBsonOid——extractOidTime =field_name——convertBsonTypes中列出的控件选项第8.2.3节,“BSON数据类型表示的转换”

下面的示例从标准输入读取JSON文档,并将其导入到名为领土mydb数据库。如果没有命名集合或表领土时,该实用程序将创建一个名为领土并将文档导入其中。如果希望创建文档并将其导入到名为领土,您必须指定列名作为进一步的参数。

Mysqlsh user@localhost/mydb——import - territories

下面的示例使用文件路径和目标导入文件中的JSON文档/欧洲/ regions.json到列jsondata的关系表中地区mydb数据库。方法指定模式名——模式命令行选项,而不是类似uri的连接字符串:

Mysqlsh user@localhost:33062——import /europe/regions。Json区域jsondata——schema=mydb

下面的示例具有文件路径但没有指定目标,将导入文件中的JSON文档/欧洲/ regions.json.如果没有命名集合或表地区(提供的导入文件的名称,不包含扩展名)可以在指定的mydb数据库时,该实用程序创建一个名为地区并将文档导入其中。如果已经有一个命名为地区,该实用程序将文档导入到它。

Mysqlsh user@localhost/mydb——import /europe/regions.json

MySQL Shell返回一条消息,确认导入的参数,例如,导入文件"/europe/regions. "Json”到表“mydb”。' regions '在MySQL服务器127.0.0.1:33062

当导入完成时,或如果导入中途被with的用户停止Ctrl + C或者由于错误,将向用户返回一条消息,显示成功导入的JSON文档的数量,以及任何适用的错误消息。如果成功完成导入,流程将返回零,如果出现错误,则返回非零退出码。