首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料匯入進階:批次處理與 LOAD DATA INFILE 深度解析

     編輯:MySQL 資料庫相關知識

一、批次處理:從 SQL 檔案匯入資料

批次模式讓 mysql 客戶端非互動式執行 SQL 腳本,適合自動化部署、日誌回放、大量資料初始化。

操作流程

  1. 準備 SQL 腳本檔(如 New_Data.sql),每句以分號結尾:
USE Meet_A_Geek;
INSERT INTO Customers (Customer_ID, Last_Name) VALUES (NULL, 'Block');
INSERT INTO Customers (Customer_ID, Last_Name) VALUES (NULL, 'Newton');
INSERT INTO Customers (Customer_ID, Last_Name) VALUES (NULL, 'Simmons');
  1. 確認 mysqld 服務運行。
  2. 執行匯入:bin/mysql -p < /home/mark/New_Data.sql,輸入密碼後自動執行。

實戰價值:利用二進制日誌快速遷移

若無法直接匯出舊資料庫,可利用其自動產生的 Binary Log(含原始 SQL 指令),配合批次模式快速導入新 MySQL 實例,免去手工撰寫 SQL 的繁瑣。

二、LOAD DATA INFILE:命令列與應用程式的最佳匯入選擇

LOAD DATA INFILE 可在 MySQL 命令列或任何使用 MySQL API 的應用程式中直接呼叫,靈活度極高。

基本語法

USE Meet_A_Geek;
LOAD DATA INFILE '/home/mark/data.sql' INTO TABLE Orders;

進階參數與實戰技巧

參數/子句說明
LOCAL指定檔案在客戶端本地,MySQL 自動傳輸至伺服器,免 FTP 上傳
LOW_PRIORITY延遲插入,待無其他讀取該表時才執行,降低對線上查詢影響
REPLACE / IGNORE處理唯一鍵衝突:REPLACE 覆蓋舊行,IGNORE 跳過新行
FIELDS TERMINATED BY欄位分隔符(預設 Tab)
FIELDS ENCLOSED BY欄位包裹字元(如雙引號)
FIELDS ESCAPED BY逸出字元(預設反斜線)

完整範例:匯入 CSV 並處理重複鍵

LOAD DATA INFILE '/home/mark/Orders.txt' REPLACE INTO TABLE Orders
FIELDS TERMINATED BY ',' ENCLOSED BY '"';

核心優勢:指定欄位匯入(解決結構不匹配)

當來源資料欄位與目標表不一致(如從 Access 升級新增欄位),mysqlimport 失效,但 LOAD DATA INFILE 可精確指定對應欄位:

LOAD DATA INFILE '/home/Order.txt' INTO TABLE Orders
(Order_Number, Order_Date, Customer_ID);

欄位列表用括號括起、逗號分隔,順序對應檔案內容,極大提升遷移彈性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved