Mysql

如何對特定列使用 LOAD DATA LOCAL INFILE?

  • March 14, 2022

我有一個文本文件目錄,因為文件名是id,並且該表的內容text是:

CREATE TABLE texts
(
ID int(11) unsigned,
Added date,
Text MEDIUMTEXT,
PRIMARY KEY(ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci

我使用 PHP glob 函式INSERT逐個文件(逐行)查找文件

INSERT INTO texts (ID,Added,Text) VALUES ($id,CURDATE(),'$text')";

$id是文件名,也是文件$text的全部內容。

如何使用LOAD DATA LOCAL INFILEto 直接INSERT進入數據庫並避免將大文本讀入 PHP 變數?

Mysql 可以使用使用者定義的變數執行以下操作

LOAD DATA LOCAL INFILE '/your_path/yourfule.csv'  
INTO TABLE texts 
FIELDS TERMINATED BY ','   
LINES TERMINATED BY '\n'  
( @ID
, @Text
)
SET `ID`   = @ID
  , `Added` = CURDATE()
  , `Text`     = @Text
;

請檢查 MySQL 是否允許從該路徑插入數據。

而且您可能還必須更改INFILE的選項

  1. CREATE單獨的負載表
  2. LOAD進那張桌子
  3. UPDATE main JOIN temp ON ... SET MAIN... WHERE ... – 即把你需要的東西從臨時表轉移到真實表中。

引用自:https://dba.stackexchange.com/questions/271338