IF ELSE里面加载数据infile mysql

时间:2017-03-01 18:56:44

标签: mysql csv load-data-infile

我正在尝试使用Load data infile将一些数据插入到已有一些数据的mysql表中。该表包含id和名称。我的csv文件包含三个字段:id,name和code。表模式也有这三个字段,但是目前,表的代码字段为NULL。我试图将csv中的代码插入表中的现有行(如果它与名称匹配),否则我试图插入一个完整的新行。

我尝试过的代码如下:

   LOAD DATA INFILE 'table1.csv'
   INTO TABLE table1
   FIELDS TERMINATED BY ','
   LINES TERMINATED BY '\n'
   IGNORE 1 LINES
   (@code, @name, @other_columns)
   IF EXISTS (SELECT * FROM table1 where name=@name);
   BEGIN
   set code=@Code;
   END
   ELSE
   BEGIN
   set code=@Code, name=@name;
   END

通过这样做,我收到一个mysql语法错误,但我无法弄明白。任何人都可以指出我正确的方向,或建议我另一种方法?我要插入数千个新行,并根据特定字段修改数千个现有行(在本例中为名称)。

1 个答案:

答案 0 :(得分:0)

MySQL does not allow the LOAD DATA INFILE statement inside a stored program,即IF statement出现的地方。将您的任务分为两部分。首先,将数据INFILE加载到temporary table。然后create a stored program replaceshttps://github.com/chemerisuk/cordova-plugin-firebase-analytics加载的数据从临时表中导入table1