我正在使用Sqoop将数据从SQL Server导入到Hive,然后将该数据从Hive导出到另一个SQL Server。 Sqoop导入工作正常,并将VCHAR/NVARCHAR数据类型转换为String。Sqoop Hive字符串数据类型到MS SQL服务器类型
我的问题是目标表上定义的最佳列类型是什么,因为Hive现在当前将数据类型保存为字符串?我最初定义了我的大部分列在目标表为VARCHAR(100),并一直在努力,但现在一些字符串,导出过程中失败,我也得到:
SQL状态:22001,错误代码:8152
“java.sql.BatchUpdateException:将字符串或二进制数据截取为 ”。
样品字符串失败:
"HEALTH SITE PROVIDERS LLC"|" "|"3435673"|"UHGID0000547777"|"906225"|"\\N"|"\\N"|"\\N"
显然这个数据比100为每列(由分隔栏|)远远更少的字符,所以我很困惑,蜂巢/ Sqoop是如何将这个字符串还是在导出过程中完成任何转换?
我正在考虑将目标表中的列定义为NVARCHAR(max),但是这有点极端吗?此外,我还需要有一些列索引以及SQL Server中不允许NVARCHAR(max)。
问候,