首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL加载数据Infile Null和表达式

MySQL加载数据Infile Null和表达式
EN

Stack Overflow用户
提问于 2014-10-16 08:41:31
回答 1查看 2K关注 0票数 0

我想从一个简单的csv文件中获取数据,并将其放入一个MySQL表中(我已经准备好了)。其中一些列的值为' null‘字符串,我可以在导入时成功地将这些值转换为null值。但是,我也希望将不为空的值放入一个转换公式中,我也可以成功地这样做。我的问题是,我似乎不能同时做这两件事。也就是说,我想从csv文件中的一列中获取值,在导入之前将它们放入一个公式中,然后取出' null‘字符串并在MySQL中将它们替换为NULL值。到目前为止,我的代码是:

代码语言:javascript
复制
LOAD DATA INFILE 'C:/Users/Spencer/Desktop/WebProjects/WeatherMan/csvdata/day2/alabama_day2.csv'
INTO TABLE alabama_d
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(primary_id, station_id, @date, @precipitation, @snowfall, @maxtemp, @mintemp)
SET date = str_to_date(@date, '%m/%d/%y'),
precipitation = nullif(@precipitation, 'NULL'),
precipitation = @precipitation/100 * 2.54,
snowfall = nullif(@snowfall, 'NULL'),
snowfall = @snowfall/100 * 2.54,
maxtemp = nullif(@maxtemp, 'NULL'),
maxtemp = @maxtemp/10 * 9/5 + 32,
mintemp = nullif(@mintemp, 'NULL'),
mintemp = @mintemp/10 * 9/5 + 32;

如果我将nullif放在第一位,nullif值将被正确导入,但数据不会通过公式。如果我把公式放在第一位,它们会起作用,但是空值不会被导入。我被困在如何才能同时获得两者的问题上。任何想法都是值得感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-10-16 12:40:52

事实证明,我没有使用一行IF语句。现在我的代码可以工作了。它是:

代码语言:javascript
复制
LOAD DATA LOCAL INFILE 'C:/Users/Spencer/Desktop/WebProjects/WeatherMan/csvdata/day2/alabama_day2.csv'
INTO TABLE alabama_d
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(primary_id, station_id, @date, @precipitation, @snowfall, @maxtemp, @mintemp)
SET date = str_to_date(@date, '%m/%d/%y'),
precipitation = if(@precipitation = 'NULL', null, @precipitation/100 * 2.54),
snowfall = if(@snowfall = 'NULL', null, @snowfall/10 * 2.54),
maxtemp = if(@maxtemp = 'NULL', null, @maxtemp/10 * 9/5 + 32),
mintemp = if(@mintemp = 'NULL', null, @mintemp/10 * 9/5 + 32);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26394458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档