批次處理是非互動式運行 mysql 程式的方法,使用與互動模式相同的命令。將包含命令的文字檔重導向至 mysql 程式。例如建立 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");
注意:語法必須正確,每句以分號結尾。USE 選擇資料庫,INSERT 插入資料。
確認 MySQL 服務運行後,執行:
bin/mysql -p < /home/mark/New_Data.sql
輸入密碼後,無錯誤即導入成功。
LOAD DATA INFILE 可在 MySQL 命令列中使用,也可在所有使用 API 的程式中使用,方便應用程式導入資料。
啟動 MySQL 命令列:
bin/mysql -p
輸入密碼進入後:
USE Meet_A_Geek;
LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders;
將 data.sql 內容導入 Orders 表。類似 mysqlimport,有可選參數:
LOAD DATA LOCAL INFILE "C:\MyDocs\SQL.txt" INTO TABLE Orders;。LOCAL 表示檔案在本地,MySQL 替你完成上傳,省去 FTP。LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Orders; 等待無其他讀取時才插入。REPLACE 替代重複鍵,IGNORE 忽略重複鍵。FIELDS 關鍵字指定 TERMINATED BY(分隔符,預設 tab)、ENCLOSED BY(括起字元)、ESCAPED BY(轉義字元,預設反斜線)。範例:
LOAD DATA INFILE "/home/mark/Orders.txt" REPLACE INTO TABLE Orders
FIELDS TERMINATED BY ',' ENCLOSED BY '"';
mysqlimport 不支援):LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders (Order_Number, Order_Date, Customer_ID); 可指定目標欄位,適合來源與目標欄位不匹配時使用。