CodeGym /課程 /SQL SELF /資料大量匯入入門

資料大量匯入入門

SQL SELF
等級 23 , 課堂 0
開放

想像一下,有人寄給你一個關於學生的 CSV 檔案,可能是從別的資料庫或外部應用程式來的。要一筆一筆手動複製?拜託,才不要咧!這時候資料大量匯入就派上用場啦。

這裡有幾個你會超需要大量匯入的情境:

  • 資料遷移:要把資料從一個系統搬到另一個。例如從 Excel 或其他資料庫搬到 PostgreSQL。
  • 資料庫初始化:幫你的資料庫塞入初始資料,比如城市清單、課程或商品分類。
  • 跟外部系統整合:定期加新資料,比如透過檔案更新第三方資料。
  • 大量資料更新:要把舊資料換成新的。

到這裡都 OK 嗎?如果沒問題,我們繼續!

資料大量匯入的主要方法

在進入細節前,先來聊聊有哪些方法可以一次加很多資料到資料庫,不是只加一兩筆。我們會先看怎麼用 SQL 指令做,然後再看更方便現代的方式——從檔案匯入。

用 SQL 指令插入資料

你應該已經知道,新增資料可以用 INSERT INTO 指令。這招對少量資料超好用。例如:

INSERT INTO students (id, name, age, course)
VALUES (1, 'Otto Lin', 20, '程式設計');

但如果你要加幾十、幾百、甚至幾千筆,這方法就超沒效率。當然可以在程式裡自動化,但手動維護這麼多 insert 真的很累又麻煩。

從檔案匯入

所以大家常用從檔案匯入資料,像是 CSV(Comma-Separated Values)。這是一種很簡單的純文字格式,每一行就是一筆資料,欄位用逗號或分號分開。

CSV 檔案內容範例:

id,name,age,course
1,Otto Lin,20,程式設計
2,Maria Chi,21,設計
3,Alex Ming,19,數學

這種格式人看得懂,程式也能處理。CSV 可以用 Excel 開、用 Python 或其他語言處理,也能輕鬆匯入資料庫。從檔案大量匯入資料比手動 insert 快超多,也比較不會出錯。

大量匯入前的準備

大量匯入成功的祕訣就是準備。你要讓資料庫準備好接收資料,還要檢查結構和資料是不是正確。

檢查資料表結構

首先,確定你的資料庫有一個跟檔案結構對得上的資料表。例如你要匯入學生資料,就要有一個對應欄位的資料表。

學生資料匯入用的資料表範例:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER NOT NULL,
    course TEXT
);

重點:

  • 確定欄位的資料型態跟檔案裡的資料一致。如果 age 是數字,那 CSV 裡那欄也只能放數字。
  • 有設限制的欄位(NOT NULLUNIQUE)要特別小心資料準備。

檢查資料內容

再來簡單說說資料本身。匯入前要檢查這些:

  1. 沒有空白行或不正確的值。 例如這行:12,,20,程式設計 會出錯,因為 name 是必填欄位。
  1. 分隔符號要對。 如果你的 CSV 用逗號(,),要確定設定正確。如果用分號(;),匯入時要特別指定。

  2. 編碼。 PostgreSQL 只吃 UTF-8。如果你的檔案是其他編碼(像 Windows-1251),要先轉換。

來個小程式設計師笑話放鬆一下

為什麼工程師這麼愛用 CSV?因為搞了一整天 JSON,終於看到「簡單」的資料了……直到遇到文字裡的逗號。

大量匯入的實際應用

在實際專案裡,大量匯入超常見。像是:

  • 更新網路商店的商品目錄。幾千筆商品的 CSV 檔,幾秒就匯完。
  • 把客戶從一個 CRM 系統搬到另一個。所有客戶、地址、訂單資料都從 CSV 匯進 PostgreSQL。
  • 做分析時,要匯入一個月的銷售資料來分析。

現在你已經知道為什麼要這樣做、怎麼準備,接下來我們就可以進入更實際的匯入工具,比如 COPY 指令。不過這個我們下堂課再說啦。

2
任務
SQL SELF, 等級 23, 課堂 0
上鎖
手動使用 INSERT INTO 載入資料
手動使用 INSERT INTO 載入資料
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION