若有文字檔等大檔案,寫 parser 再建立 insert into
的語法來塞資料速度不算快。簡單格式的檔案 (如一行一筆資料或 comma 分隔等) 可以透過 LOAD DATA
來將資料塞進 table 中。
LOAD DATA 需要特殊權限,請先檢查 my.cnf
檔案中是否已允許該語法:
[mysql] # enable LOAD FILE syntax local-infile = 1
再來是檔案內容,這邊的範例是一行一筆資料:
alice bob cell ......
確定資料格式以後,建立一個暫時的 table 供匯入使用:
CREATE TABLE tmp ( str varchar(50) );
注意,匯入速度要快的話,臨時的 table 不要設定任何 trigger
、primary key
、index
等,不然會有大量的 disk I/O 拖慢速度。
最後就是下指令來將檔案中的內容匯入資料庫中:
LOAD DATA LOCAL INFILE '/path/to/file/simple-data.txt' into table tmp;
資料都匯入臨時的 table,就可以使用 INSERT INTO
… SELECT 語法來將資料拉進正式環境了:
INSERT INTO words (`word`) SELECT (`str`) FROM tmp