sqoop hcatalog export oracle 错误 Projected column xx not in the list of
sqoop export --verbose --connect jdbc:oracle:thin:@10.0.0.1:1521:orcl --username test --password test --table TEST_EXPORT -m 1 \--hcatalog-database hive_test \
--hcatalog-table hive_test_table \
--columns "REGION_CODE" \
--input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--null-string 'null' \
--null-non-string 0
报错:ERROR tool.ExportTool: Encountere IOException running export job: java.io.IOException:Projected column region_code not in the list of columns from database
hive和oracle表结构和字段类型是一样的。
使用的是HDP-2.6.2.14-5版本,sqoop-1.4.6 .
去查了下sqoop源码,在比较命令行参数中参数中的字段和从oracle中获取的字段时,命令行中的参数被轮换成了小写,而从oracle获取的字段名字是大写的,因此对不上报错。
String[] colNames = options.getColumns();//获取命令行字段
dbColumnNames = new String;//
for (int i = 0; i < colNames.length; ++i) {
dbColumnNames = colNames.toLowerCase();//将命令行的参数中字段名转换为小写
}
colInfo.putAll(connManager.getColumnInfo(dbTableName));//从jdbc获取oracle的字段名,字段名为大写
for (String col : dbColumnNames) {
List<Integer> info = colInfo.get(col);
if (info == null) { //比较dbColumnNames中的小写字段名与ORACLE中中字段名,抛出异常
throw new IOException("Projected column " + col
+ " not in list of columns from database");
}
dbColumnInfo.put(col, info);
}
你们有遇到这个问题吗?
找下这个字段:region_code ,看看导入表和被导入表是否都有
s060403072 发表于 2019-4-17 12:41
找下这个字段:region_code ,看看导入表和被导入表是否都有
hive和oracle表字段是一样的。 巨波小学生 发表于 2019-4-17 13:34
hive和oracle表字段是一样的。
楼主按照下面方式来操作:
1.可以尝试去掉--columns "REGION_CODE" \
看看是否有错误
2.按照下面方式
--columns REGION_CODE \
看看有什么问题。
3.不带REGION_CODE ,带上其它字段
--columns 你的字段名称1,你的字段名称2 \
看看上述都是什么问题
页:
[1]