分享

sqoop1 从sqlserver导出数据到HDFS报错

sqlserver数据库中,凡是含有datetime类型字段的表,都报一样的错误,不含datetime类型的表则导出成功
环境是:
sqoop1.4.6
jdk1.8
sqljdbc42.jar

(注,我这里试了下mysql数据库-含有datetime字段,是导出成功的)

报错

报错

au_user表结构

au_user表结构

请问下如何解决


已有(7)人评论

跳转到指定楼层
yuhaiyang 发表于 2018-1-29 17:38:42
补充下导出命令:sqoop import  --connect "jdbc:sqlserver://xxxx:1433;DatabaseName=test" --username xxx --password 123456 --table AU_User --target-dir  hdfs://hadoop1:8020/user/yinhuotong/test06 --m 1   
回复

使用道具 举报

desehawk 发表于 2018-1-29 18:03:05
本帖最后由 desehawk 于 2018-1-29 18:04 编辑
yuhaiyang 发表于 2018-1-29 17:38
补充下导出命令:sqoop import  --connect "jdbc:sqlserver://xxxx:1433;DatabaseName=test" --username xx ...

尝试转换下字段类型,例子如下
sqoop import  --connect "jdbc:sqlserver://xxxx:1433;DatabaseName=test" --username xxx --password 123456 --query 'SELECT 。。。。。。。 CAST (lastactive AS TIMESTAMP), ... FROM AU_User  WHERE $CONDITIONS'
回复

使用道具 举报

yuhaiyang 发表于 2018-1-29 18:15:31
....目标是全表导出,然后发现这个错误了
回复

使用道具 举报

yuhaiyang 发表于 2018-1-29 18:17:25
desehawk 发表于 2018-1-29 18:03
尝试转换下字段类型,例子如下
sqoop import  --connect "jdbc:sqlserver://xxxx:1433;DatabaseName=tes ...

....目标是数据库全表导出,然后发现这个错误了
回复

使用道具 举报

desehawk 发表于 2018-1-29 18:33:53
yuhaiyang 发表于 2018-1-29 18:17
....目标是数据库全表导出,然后发现这个错误了

那就全表导出啊,select 所有字段不就可以了。不加where,全库导出也没问题啊。使用shell依次执行。
回复

使用道具 举报

翱翔于天变 发表于 2018-1-30 16:06:32
desehawk 发表于 2018-1-29 18:03
尝试转换下字段类型,例子如下
sqoop import  --connect "jdbc:sqlserver://xxxx:1433;DatabaseName=tes ...

感谢,看了你的评论,又了灵感
回复

使用道具 举报

yuhaiyang 发表于 2018-1-31 14:12:04
desehawk 发表于 2018-1-29 18:33
那就全表导出啊,select 所有字段不就可以了。不加where,全库导出也没问题啊。使用shell依次执行。

谢谢您的回答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条