Soop导入Mssql增量

时间:2014-05-27 16:22:03

标签: sql-server datetime sqoop

当我尝试使用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;

1 个答案:

答案 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'

希望它可以提供帮助。