將 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');
# 確認 mysqld 運行後
bin/mysql -p < /home/mark/New_Data.sql
輸入密碼後自動執行檔案內所有語句。適用:日誌回放、大量資料初始化、結構部署。
與 mysqlimport 類似,但可在 mysql 命令列、API 程式中直接呼叫。
USE Meet_A_Geek;
LOAD DATA INFILE '/home/mark/data.sql' INTO TABLE Orders;
| 選項 | 功能 |
|---|---|
LOCAL | 檔案在客戶端本機,MySQL 自動上傳(免 FTP) |
LOW_PRIORITY | 等待無其他讀取時才插入,降低衝突 |
REPLACE | 唯一鍵衝突時以新資料取代舊資料 |
IGNORE | 唯一鍵衝突時忽略新資料保留舊資料 |
LOAD DATA INFILE '/home/mark/Orders.txt' REPLACE INTO TABLE Orders
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
TERMINATED BY:欄位分隔符(預設 Tab)ENCLOSED BY:欄位包圍字元(如雙引號)ESCAPED BY:逸出字元(預設反斜線)LINES TERMINATED BY:行結束符(預設換行)mysqlimport 做不到,但 LOAD DATA INFILE 可:
LOAD DATA INFILE '/home/Order.txt' INTO TABLE Orders
(Order_Number, Order_Date, Customer_ID);
Access 遷移 MySQL 時欄位不匹配、需新增欄位,此功能不可或缺。
原文含 Access 遷移章節,此處省略,核心原理同上:匯出 CSV/文字檔再用 LOAD DATA INFILE 指定欄位導入。