有条件地忽略行加载数据mysql

Ale*_*lex 3 mysql sql if-statement load-data-infile

我正在将一个大型数据集(60演出)加载到数据库中.有些记录可以跳过,因为它们包含缺少的值.如何告诉MySQL跳过包含某些(在这种情况下丢失)值的行?例如,我的文件看起来像这样

Value1, Value2
1,2
3,4
,5
9,10
Run Code Online (Sandbox Code Playgroud)

第三行可以跳过而不加载.我知道我可以加载所有内容然后删除它但处理60 gig文件需要很长时间,所以我想节省计算能力.

谢谢

Dev*_*art 5

如果'Value1'是唯一字段,则可以使用IGNORE选项.例如:

CREATE TABLE table1(
  Value1 INT(11) NOT NULL,
  Value2 INT(11) DEFAULT NULL,
  PRIMARY KEY (Value1)
);

LOAD DATA INFILE 'file.txt' 
  IGNORE -- forces to ingore existed records
  INTO TABLE table1
  FIELDS TERMINATED BY ','
  LINES TERMINATED BY '\r\n'
  IGNORE 1 lines
  (@var1, Value2)
  SET Value1 = IF(@var1 = 0, 1, @var1)
Run Code Online (Sandbox Code Playgroud)

'IF(@ var1 = 0,1,@ var1)'帮助我们用EXISTED KEY VALUE'1'改变缺失值'0',这些记录将被忽略.