报错原因: 数据导入oracle,表名字段名要一定要大写

报错如下:
2024-06-24 17:01:30,030 | ERROR | IPC Server handler 4 on default port 27102 | Task: attempt_1719212265552_0008_m_000000_0 - exited : java.io.IOException: java.sql.SQLException: Missing IN or OUT parameter at index:: 2
	at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.close(AsyncSqlRecordWriter.java:197)
	at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.close(MapTask.java:683)
	at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:806)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:348)
	at org.apache.hadoop.mapred.YarnChild$1.run(YarnChild.java:184)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1890)
	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:178)
Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 2
	at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1844)
	at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:10213)
	at oracle.jdbc.driver.OraclePreparedStatementWrapper.addBatch(OraclePreparedStatementWrapper.java:1362)
	at org.apache.sqoop.mapreduce.UpdateOutputFormat$UpdateRecordWriter.getPreparedStatement(UpdateOutputFormat.java:174)
	at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.execUpdate(AsyncSqlRecordWriter.java:153)
	at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.close(AsyncSqlRecordWriter.java:194)
	... 8 more
 | TaskAttemptListenerImpl.java:304


错误的抽数脚本:
/tpdata/sqoop_tool/sqoop-1.4.7.bin__hadoop-2.6.0/bin/sqoop export \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@10.22.33.44:1521/DEV \
--username TEST \
--password sW22bb4ApNtjQvmq \
--table test.test0621 \
--columns id \
--input-fields-terminated-by '|' \
--input-lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--outdir /tpdata/data/sqoopcode \
--update-key id \
--update-mode allowinsert \
--export-dir /user/hive/warehouse/dlk_tpprty_ods_bak.db/test0621/etl_date=20200920 \
-m 1

修改后正确的抽数脚本:
/tpdata/sqoop_tool/sqoop-1.4.7.bin__hadoop-2.6.0/bin/sqoop \
export -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:oracle:thin:@10.22.33.44:1521/DEV \
--username TEST \
--password sW22bb4ApNtjQvmq \
--table TEST.TEST0621 \
--columns ID,NAME \
--input-fields-terminated-by '|' \
--input-lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--outdir /tpdata/data/sqoopcode \
--update-key ID \
--update-mode allowinsert \
--export-dir /user/hive/warehouse/dlk_tpprty_ods_bak.db/test0621/etl_date=20200920 \
-m 1

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐