[mw_shl_code=bash,true]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[/mw_shl_code]
报错: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获取的字段名字是大写的,因此对不上报错。
[mw_shl_code=bash,true]
String[] colNames = options.getColumns();//获取命令行字段
dbColumnNames = new String[colNames.length];//
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);
}[/mw_shl_code]
你们有遇到这个问题吗?
|
|