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

如何在angularJS中使用ng-if,ng-else

对 Python 中的 If、continue 和 else 的结果感到困惑

列表生成式中的 if else