我正在尝试使用加载数据文件将一些数据插入到已经有一些数据的mysql表中。该表包含ID和名称。我的csv文件包含三个字段:id,名称和代码。表模式还具有这三个字段,但是当前,表的代码字段为NULL。我正在尝试将代码从csv插入到表中的现有行(如果它与名称匹配),否则我正在尝试插入一个完整的新行。
我尝试过的代码如下:
加载数据文件'table1.csv'
到表table1
以','结尾的字段
'\ n'终止的行
忽略1行
(@ code,@ name,@ other_columns)
如果存在(SELECT * FROM table1,其中name = @ name);
开始
设置代码= @代码;
结束
其他
开始
设置代码= @代码,名称= @名称;
结束
这样做,我得到一个mysql语法错误,但无法弄清楚。谁能指出我正确的方向,或向我建议另一种方法?我有成千上万的新行要插入,有成千上万的现有行要根据特定字段(在本例中为name)进行修改。
最佳答案
MySQL does not allow the LOAD DATA INFILE statement inside a stored program,即IF statement出现的位置。将您的任务分为两部分。首先,将DATA INFILE加载到temporary table中。然后create a stored program将replaces的数据从临时表加载到您的table1
中。
关于mysql - IF ELSE内部在mysql中加载数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42539786/