回覆列表
  • 1 # 愛可生雲資料庫

    本文介紹 MySQL 8.0 shell 子模組 Util 的兩個匯入特性 importTable/import_table(JS和python 版本的命名差異)、importJson/import_json的使用方法。

    其中 import_table 是透過傳統 MySQL 協議來通訊,Import_json 是透過 X 外掛協議來通訊。MySQL 一直以來提供匯入檔案 SQL 命令 load data infile(單執行緒)以及對應的可執行檔案 mysqlimport(多執行緒)。

    比如我匯入 100W 行示例資料到表 ytt.tl1,花了 24 秒。這個已經是 MySQL 預設匯入來的最快的。分析那我們現在看下 mysqlimport 工具的升級版,mysqlshell 的 util 工具集。

    使用這兩個工具之前,必須得臨時開啟 local_infile 選項。1. import_table建立 3306 埠的新連線我這裡切換為 python 模式清空掉示例表 Ytt.tl1import_table 有兩個引數,第一個引數定義匯入檔案的路徑,第二個定義相關選項,比如匯入的格式,併發的數量等。定義檔案路徑(引數1)定義選項(引數2)執行匯入:只花了不到 17 秒,比傳統 mysqlimport 快了不少。

    我們上面指定了顯式指定了欄位分隔符,那有沒有已經定義好的組合格式呢? 答案是有的,選項 dialect 可以指定以下格式:csv,tsv,json,csv-unix那麼上面的匯入,我們可以更簡單,改下變數 y_options1 的定義匯入時間差不多。這裡要說明下,dialect 選項的優先順序比較低,比如添加了"linesTerminatedBy":"\r\n", 則覆蓋他自己的"\n"。

    選項 diaelect 還有一個可選值為 json,可以直接把 json 結果匯入到文件表裡。比如我新建一張表 tl1_json重新定義檔案以及匯入選項。匯入 JSON 資料速度也還可以,不到 24 秒。那匯入 json 資料,就必須得提到以 X 外掛協議通訊的工具 import_json了。2. imort_json我們切換到 mysqlx 埠import_json 引數和 Import_table 引數類似,這裡我改下選項我在手冊上沒有看到多執行緒的選項,所以單執行緒跑 35 秒慢了些。檢視剛剛匯入的資料import_json 不僅僅可以匯入 Json 資料,更重要的是可以在 BSON 和 JSON 之間平滑的轉換,有興趣的同學可以去 TRY 下。

  • 中秋節和大豐收的關聯?
  • 為什麼把海螺放在耳朵上能夠聽到海浪的聲音?