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 Server 中的 `mydb`.`regions` 資料表

當匯入完成時,或者當使用者使用 Ctrl+C 或因錯誤而中途停止匯入時,會向使用者傳回一則訊息,顯示已成功匯入的 JSON 文件數,以及任何適用的錯誤訊息。如果匯入順利完成,則程式會傳回零,如果發生錯誤,則會傳回非零的結束代碼。