MySQL Shell 9.0  /  ...  /  使用 --import 命令导入 JSON 文档

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

注意

--import 命令已弃用,将在未来的版本中删除。

--import 命令可用作 mysqlsh 命令界面用于 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--extractOidTime=field_name--convertBsonTypes 以及 第 11.2.4 节,“BSON 数据类型表示的转换” 中列出的控制选项。

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

mysqlsh user@localhost/mydb --import - territories

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

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

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

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

MySQL Shell 返回一条消息,确认导入参数,例如 从文件 "/europe/regions.json" 导入到位于 127.0.0.1:33062 的 MySQL 服务器中的 `mydb`.`regions` 表中

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