当我尝试使用sqoop从mssql导入时出现错误。我在datetime字段上使用lastmodified选项进行增量导入。
当sqoop生成边界值查询(SELECT MIN([CODE_ID]), MAX([CODE_ID]) FROM [tablename] WHERE ( [DATETIME_COLUM] >= '2000-01-01' AND [DATETIME_COLUMN] < '2014-05-27 18:13:47.073')
时,
我收到错误,因为日期时间格式不正确。
错误:
引起:com.microsoft.sqlserver.jdbc.SQLServerException:将char转换为datetime错误。
我可以指定sqoop日期时间格式吗?
这是我的命令:
sqoop import -connect'jdbc:sqlserver://; databasename = XXX; username = XXX; password = XXX'-table'tablename'-hbase-table Table -column-family OFE -hbase-row-key CODE_ID - 增量lastmodified -check-column DATETIME_COLUMN -last-value&#39; 2000-01-01&#39;
答案 0 :(得分:0)
我发现自己是解决方案,所以我分享了。 问题是我的mssql数据库是法语格式的,所以要解决sqoop查询导入的问题是在查询中添加日期时间格式。所以正确的命令是:
sqoop import -connect 'jdbc:sqlserver://;databasename=;username=sa;password=;'
-query 'SET DATEFORMAT ymd;select * from table where $CONDITIONS'
-incremental lastmodified -check-column DATE –last-value '2000-01-01'
希望它可以提供帮助。