sqoop2导入导出null数据到mysql中

查看数: 26852 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-9-27 20:53

正文摘要:

现有如下mysql表结构 create table users(    user_id INT NOT NULL,    name VARCHAR(20),    age int,    sex char,    PRIMARY KEY ( user_id ) )ENGI ...

回复

SuperDove 发表于 2016-10-17 19:53:05
具体代码如下
else if(fields[i] == null || "null".equals(fields[i]) || "".equals(fields[i])){
        System.out.println("fields[i] is null  or fields[i] == null  or fileds[i]==''");
        out[i] = null;
}
SuperDove 发表于 2016-10-17 19:37:30
问题经过一段时间整理,已解决,将CSVIntermediateDataFormat.java文件的206行对  "null".equals(fields[i])的情况做空值处理即可。
中间遇见的打包文件找不到等问题,同事帮忙找着了,感谢各位帮忙解决
tntzbzc 发表于 2016-9-28 16:46:57
SuperDove 发表于 2016-9-28 15:25
你说的这个select if(isnull(col),0,1) as col语句是写在哪里?sqoop:000> create job -f 3 -t 2
Creati ...

那就可能sqoop不支持了
SuperDove 发表于 2016-9-28 15:25:46
tntzbzc 发表于 2016-9-28 13:15
可以尝试如果为空返回0,否则返回1
select if(isnull(col),0,1) as col.

你说的这个select if(isnull(col),0,1) as col语句是写在哪里?sqoop:000> create job -f 3 -t 2
Creating job for links with from id 3 and to id 2
Please fill following values to create new job object
Name: test13
From Job configuration
Input directory: /tmp/download/data.txt
To database configuration
Schema name: zcy
Table name: users
Table SQL statement: ----是写在这里吗?我写的select if(isnull(age),0,1) as col也报错
Table column names: users,name,age,sex
Stage table name:
Should clear stage table:
Throttling resources
Extractors: 1
Loaders: 1


tntzbzc 发表于 2016-9-28 13:15:34
SuperDove 发表于 2016-9-27 22:08
哎,就是因为原库中的age为int类型,并且还default null,你说气不气。
不过你这么一说我想起另一个方法 ...

可以尝试如果为空返回0,否则返回1
select if(isnull(col),0,1) as col.

SuperDove 发表于 2016-9-27 22:08:02
starrycheng 发表于 2016-9-27 21:36
sqoop目前还没有发现数据类型转换。
导入和导出的数据类型一致。

哎,就是因为原库中的age为int类型,并且还default null,你说气不气。
不过你这么一说我想起另一个方法,做一个中间表然后倒入转换格式看看~~
starrycheng 发表于 2016-9-27 21:36:51
本帖最后由 starrycheng 于 2016-9-27 21:38 编辑
SuperDove 发表于 2016-9-27 21:17
问题就是现在有一堆需要处理的int类型数据的值就是null......有的时候就是前人处理数据不规范,后人遭殃 ...


sqoop目前还没有发现数据类型转换。
导入和导出的数据类型一致。

只能把age的数据类型,改成与原库一样的类型。而不是整形。这样就没问题了


SuperDove 发表于 2016-9-27 21:23:16
starrycheng 发表于 2016-9-27 21:14
null你也要填入数据呀。
可以填写为0,但是你不能不填啊。
这是基本的常识了

我想着既然小丽的age为空,我设置age空出来不设值为:4,'小丽',,'女'。但是sqoop从hdfs抽取数据的时候也报错,这个位置是空的也要有值,我就将这里赋值为NULL,结果为4,'小丽',NULL,'女'。
然后重新执行job就是null转变为number报错。
这种数据类型应该怎么解决才好



SuperDove 发表于 2016-9-27 21:17:58
starrycheng 发表于 2016-9-27 21:14
null你也要填入数据呀。
可以填写为0,但是你不能不填啊。
这是基本的常识了

问题就是现在有一堆需要处理的int类型数据的值就是null......有的时候就是前人处理数据不规范,后人遭殃啊

关闭

推荐上一条 /2 下一条