Documentation Home
MySQL 外壳 8.0  / 第 11 章 MySQL Shell 实用程序  / 11.2 JSON 导入实用程序  /  11.2.3 使用 --import 命令导入 JSON 文档

11.2.3 使用--import命令导入JSON文档

该命令可用作mysqlsh--import命令接口的替代方法,用于 JSON 导入实用程序的命令行调用。此命令提供了一种不使用选项名称的简短语法,并且它接受来自标准输入的 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、 、 和第 11.2.4 节“BSON 数据类型表示的转换”中列出的控制选项。 --extractOidTime=field_name--convertBsonTypes

以下示例从标准输入读取 JSON 文档并将它们导入 数据库中指定territories的目标。mydb如果未 territories找到名为的集合或表,该实用程序将创建一个名为的集合并将territories文档导入其中。如果要创建文档并将其导入名为 的关系表territories,则必须指定列名作为进一步的参数。

mysqlsh user@localhost/mydb --import - territories

以下具有文件路径和目标的示例将文件中的 JSON 文档导入 数据库中命名的关系表 中/europe/regions.json的列 。架构名称是使用 命令行选项指定的,而不是在类似 URI 的连接字符串中: jsondataregionsmydb--schema

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

以下具有文件路径但未指定目标的示例导入文件中的 JSON 文档 /europe/regions.json。如果在指定的数据库中找不到名为的集合或表regions(提供的导入文件的名称,不带扩展名) mydb,该实用程序将创建一个名为的集合并将regions文档导入其中。如果已有一个名为 的集合 regions,该实用程序会将文档导入其中。

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

MySQL Shell 返回一条确认导入参数的消息,例如,Importing from file "/europe/regions.json" to table `mydb`.`regions` in MySQL Server at 127.0.0.1:33062

导入完成后,或者如果用户使用Ctrl+C或因错误 中途停止导入,则会向用户返回一条消息,显示成功导入的 JSON 文档的数量,以及任何适用的错误消息。如果导入成功完成,该过程返回零,如果出现错误,则返回非零退出代码。