IF ELSE inside Load data infile mysql
Posted
技术标签:
【中文标题】IF ELSE inside Load data infile mysql【英文标题】: 【发布时间】:2017-07-21 06:08:36 【问题描述】:我正在尝试使用 Load data infile 将一些数据插入到已经有一些数据的 mysql 表中。该表包含 id 和 name。我的 csv 文件包含三个字段:id、name 和 code。表模式也有这三个字段,但目前,表的代码字段为 NULL。如果它与名称匹配,我正在尝试将 csv 中的代码插入到表中的现有行中,否则我正在尝试插入一个完整的新行。
我试过的代码如下:
加载数据输入文件'table1.csv' INTO表表1 以“,”结尾的字段 以“\n”结尾的行 忽略 1 行 (@code、@name、@other_columns) IF EXISTS (SELECT * FROM table1 where name=@name); 开始 设置代码=@代码; 结尾 别的 开始 设置代码=@代码,名称=@名称; 结尾这样做,我得到一个 mysql 语法错误,但我无法弄清楚。谁能指出我正确的方向,或向我建议另一种方法?我有数千个新行要插入,数千个现有行要根据特定字段(在本例中为名称)进行修改。
【问题讨论】:
【参考方案1】: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
中。
【讨论】:
以上是关于IF ELSE inside Load data infile mysql的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 三元运算符变成完整的 if/else 语句问题
[Inside HotSpot] C1编译器优化:条件表达式消除
[NgRx] NgRx Data Fetching Solution - How to Load Data Only If Needed