MySQL LOAD DATA INFILE 支援 SET 子句為目標表中不在檔案內的欄位賦值。
LOAD DATA INFILE '/path/data.txt'
INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(a, b, c) -- 檔案中只有 a,b,c 三欄
SET d = 'fixed_value', -- 固定常數
created_by = @current_user, -- 使用者變數
created_at = NOW(); -- 函數運算式
SET @current_user = 'admin'; -- 連線層級變數
LOAD DATA INFILE ... SET created_by = @current_user;
SET 中可使用 NOW()、UUID() 等函數,但不可直接引用其他表欄位(需子查詢)。(a,b,c) 對應,若順序不同需調整。LOCAL 關鍵字:LOAD DATA LOCAL INFILE 從客戶端讀取,需伺服器與客戶端皆啟用 local_infile=1。使用 SET 子句可在 LOAD DATA 過程中為額外欄位賦固定值、使用者變數或函數結果,避免後續 UPDATE 操作,提升大量匯入效能。