此寫法資料檔案內欄位數必須跟資料庫表一致
load data local infile "C:\\test.txt" into table tableName CHARACTER SET gbk fields terminated by '|' LINES TERMINATED by '\n';
在生產環境中推薦使用自定義列匯入,這樣如果是不需要的欄位,就可以不接這個欄位內容,這樣就不必改表結構。還可以做成資料庫設定等進行維護。
//不需要的列直接用@過濾掉就可以了(可以使用同一個變數名比如@a,或者使用我下面不同的變數名加上@符號)
//不需要的列的列名可以隨便定義,但是沒有加@符的需要跟資料庫表欄位名一一對應。
// 不需要的列也需要跟資料檔案中的欄位一一對應,類似於佔個坑,但是不進行資料繫結。
load data local infile "C:\\test.txt" into table tableName CHARACTER SET gbk fields terminated by '|' LINES TERMINATED by '\n' (c1,@2,c3,@4, c5,@6,c7,@8,c9,@10);
// set命令可以設定預設值,可以直接賦值, 也可以使用if判斷,跟update 差不多。
load data local infile "C:\\test.txt" into table tableName CHARACTER SET gbk fields terminated by '|' LINES TERMINATED by '\n' (c1,c2,c3,c4,c5,c6,c7,c8,c9,c10) set c1 = '1', c9=if(c9='0000-00-00',now(),c9)
1|test|3|tmp|5
6|string|8|a|10
infile "C:\\test.txt" // 這是你的資料檔案存放的位置 最好使用雙引號和使用跳脫符進行路徑跳脫
into table tableName // 這是你資料庫的表名
CHARACTER SET gbk // 這是以什麼字元編碼讀取你的資料檔案,當你的檔案和資料庫不對應的時候需要設定(對應的話就不需要)。當你的資料檔案是gbk的時候你需要設定成gbk。
fields terminated by '|' // 這個是你的資料檔案欄位是以什麼方式進行分割的。這個是以豎線分割
LINES TERMINATED by '\n' // 這個是你的資料檔案一條資料是以什麼方式區分的。這裡是以換行進行區分的。
(c1,c2,c3,c4,c5,c6,c7,c8,c9,@c10) // 指定列匯入,跟資料庫表欄位對應,不需要的列加@符佔個坑位。不需要的列名可隨便定義,需要的列名跟資料庫欄位對應。
set c1 = '1', c9=if(c9='0000-00-00',now(),c9) // 給匯入的資料設定值,這裡判斷的值是匯入後的值,比如這個例子是當一個時間型別的資料時在資料檔案裡是個空的時候匯入到表中對應是個0000-00-00 而不是null。所以這裡要用0000-00-00,而不是""。