Navicat Blog

透過 DAT 檔案將資料填入 MySQL 8 資料表 2024 年 12 月 20 日,由 Robert Gravelle 撰寫

在異質儲存庫之間遷移資料(也就是來源和目標資料庫來自不同供應商的不同資料庫管理系統)會帶來一些挑戰。在某些情況下,可能可以同時連接到兩個資料庫。然而,有時候這是不可能的。當面臨這種困境時,資料庫從業者別無選擇,只能從傾印檔案將資料填入資料表。Navicat 在這個程序中可以提供很大幫助。匯入精靈允許你從各種資料來源(包括 CSV、TXT、XML、DBF 等)將資料匯入資料表或集合。此外,你可以將設定儲存為設定檔以便日後使用或設定自動執行工作。在今天的文章中,我們將使用免費 Navicat Premium Lite 17 的匯入精靈從 PostgreSQL 的「dvdrental」資料庫 將資料遷移到 MySQL 8 執行個體。

在本教學中,我們將使用 PostgreSQL DAT 檔案將資料填入 MySQL 8 中的 film 資料表。以下是在資料表設計器中的資料表定義:

film_table_definition (96K)

若要啟動匯入精靈,請在 Navicat 導覽窗格中以滑鼠右鍵按一下(或在 macOS 中按住 Control 鍵並按一下)目標資料表,然後從選單中選取「匯入精靈...」:

import_wizard_command (78K)

匯入精靈的第一個畫面是我們選擇來源檔案的地方。請注意,Lite 版本僅支援文字型的檔案,例如 TXT、CSV、XML 和 JSON。雖然我們的檔案是 .dat,但我們可以選擇「文字檔案」選項,該選項包括 .txt、.csv 和 .dat 格式:

import_wizard_data_format (48K)

在下一個畫面中,我們將選擇 DAT 檔案。每個資料表都有一個 DAT 檔案。film 資料表的檔案名稱是「3061.dat」:

import_wizard_open_file_dialog (152K)

接下來是設定分隔符號的時候了。記錄是使用換行(LF)字元分隔,而欄位使用 TAB 字元分隔。文字值沒有用引號引起來,因此請務必從「文字辨識符號」文字方塊中移除雙引號(")字元:

import_wizard_delimiter (45K)

在下一個畫面中,你會發現一些額外的選項。在這裡,我們需要取消勾選「欄位名稱列」方塊,因為 DAT 檔案中沒有欄位名稱。我們還需要將日期順序變更為「年/月/日」("YMD"),並將正斜線(/)分隔符號變為破折號(-),因為我們將要匯入的日期採用 YYYY-MM-DD hh:mm:ss.ms 格式,即 2013-05-26 14:50:58.951:

import_wizard_additional_options (58K)

我們可以選擇使用現有資料表或建立新資料表。由於在啟動匯入精靈時已經選擇了目標資料表,因此會在這裡顯示:

import_wizard_target_table (40K)

下一步是將來源欄位對應到目標資料表中的欄位。在這裡,我們不能假設他們一定會一一對應好。快速瀏覽 DAT 檔案中的項目就會發現,last_update 和special_features 欄位的位置是相反的:

5 African Egg A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico 2006 1 6 2.99 130 22.99 G 2013-05-26 14:50:58.951 {"Deleted Scenes"} 'african':1 'chef':11 'dentist':14 'documentari':7 'egg':2 'fast':5 'fast-pac':4 'forens':19 'gulf':23 'mexico':25 'must':16 'pace':6 'pastri':10 'psychologist':20 'pursu':17

我們可以以滑鼠右鍵按一下(或在 macOS 中按住 Control 鍵並按一下)對話方塊中的任何位置,然後從選單中選取「直接配對全部欄位」,以快速將欄位對應到目標資料表的欄位。但是,完成後,我們必須從「目標欄位」下拉式清單中手動選擇「last_update」和「special_features」欄位以錸更它們的順序:

import_wizard_field_mappings (75K)

請注意,欄位 13(f13)可以完全忽略。

對於匯入模式,我們可以選擇附加或複製記錄,因為資料表應該是空的:

import_wizard_import_mode (62K)

當從一種資料庫類型遷移到另一種時,很可能會遇到資料轉換錯誤。因此,最好取消勾選「進階」中的「使用延伸插入陳述式」方塊。這樣做會使 Navicat 為每個記錄發出單獨的 INSERT 陳述式,而不是使用以下語法合併多列資料:

INSERT INTO `film` VALUES 
  (1, 'African Egg', 'A Fast-Paced...'), 
  (2, 'Rumble Royale', 'A historical drama...'), 
  (3, 'Catherine the Great', 'A new take on...'), 
  etc...
import_wizard_advanced_options (74K)

現在,是時候按下「開始」按鈕來啟動匯入程序。

正如預期的那樣,出現了幾個錯誤(準確地說是 3 個錯誤),但是 1003 列資料中的 1000 列已加到目標資料表中!

import_wizard_results (111K)

總結

Navicat 的匯入精靈可以大幅減少在異質儲存庫之間遷移資料所花費的時間。它支援多種輸入格式,包括 CSV、TXT、XML、DBF、ODBC 資料來源等。

有興趣試用 Navicat Premium Lite 17 嗎?你可以在 這裡 免費下載。它適用於 Windows、macOS 和 Linux 作業系統。

Navicat Blogs
Feed Entries
Blog Archives
Share