我正在尝试使用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语法错误,但我无法弄明白。任何人都可以指出我正确的方向,或建议我另一种方法?我要插入数千个新行,并根据特定字段修改数千个现有行(在本例中为名称)。
答案 0 :(得分:0)
MySQL does not allow the LOAD DATA INFILE statement inside a stored program,即IF statement出现的地方。将您的任务分为两部分。首先,将数据INFILE加载到temporary table。然后create a stored program replaces将https://github.com/chemerisuk/cordova-plugin-firebase-analytics加载的数据从临时表中导入table1
。