3 回答

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
這將做你想要的。它將第四個(gè)字段讀入局部變量,然后將實(shí)際字段值設(shè)置為NULL,如果局部變量最終包含空字符串:
LOAD DATA infile '/tmp/testdata.txt'
INTO TABLE moo
fields terminated BY ","
lines terminated BY "\n"
(one, two, three, @vfour, five)
SET four = nullif(@vfour,'')
;
如果它們都可能是空的,那么你將它們?nèi)孔x入變量并有多個(gè)SET語(yǔ)句,如下所示:
LOAD DATA infile '/tmp/testdata.txt'
INTO TABLE moo
fields terminated BY ","
lines terminated BY "\n"
(@vone, @vtwo, @vthree, @vfour, @vfive)
SET
one = nullif(@vone,''),
two = nullif(@vtwo,''),
three = nullif(@vthree,''),
four = nullif(@vfour,'')
;

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
MySQL手冊(cè)說(shuō):
使用LOAD DATA INFILE讀取數(shù)據(jù)時(shí),使用''更新空列或缺少列。如果要在列中使用NULL值,則應(yīng)在數(shù)據(jù)文件中使用\ N. 在某些情況下也可以使用文字“NULL”。
所以你需要用\ N替換空白像這樣:
1,2,3,4,51,2,3,\N,51,2,3

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
根據(jù)數(shù)據(jù)庫(kù)配置,行為會(huì)有所不同。在嚴(yán)格模式下,這會(huì)拋出錯(cuò)誤,否則會(huì)發(fā)出警告。以下查詢可用于標(biāo)識(shí)數(shù)據(jù)庫(kù)配置。
mysql> show variables like 'sql_mode';
添加回答
舉報(bào)