在Sqoop导出中处理标识列

时间:2019-06-25 17:07:20

标签: sqoop

我正在尝试通过Sqoop将hdfs中的平面文件导出到DB2表中。
在db2表中,我只有一个标识列。
在我的Sqoop脚本中,我提到了--identity-insert
在我的csv文件中,我有10列,在表中,我有11列(在平面文件中提到了10列+ 1个标识列)。 当我导出此文件时,它尝试将第一列映射到表的标识列,但失败。
因此,我尝试在“ identity”列的位置添加“ null”。
这次导出失败,并出现以下错误

Error: java.io.IOException: com.ibm.db2.jcc.am.SqlException: [jcc][t4][10251][10308][3.68.61] java.sql.Connection.close() requested while a transaction is in progress on the connection

我看过其他文章,指出将数据加载到没有标识列的临时表中,然后复制数据。但是该选项不适合我。

我正在附加sqoop脚本

sqoop export \
  -Dsqoop.export.records.per.statement=50 \
  -Dsqoop.export.statements.per.transaction=100 \
  -D dfs.mapred.max.split.size=1048576 \
  -D mapreduce.job.max.split.locations=100 \
  -D mapred.job.name=TEST \
  --connect jdbc:db2://${DB2HOST}:${DB2PORT}/${DB2NAME} \
  --username ${DB2USER} \
  --password ${DB2PASS} \
  --table ${DB2TBL} \
  --input-fields-terminated-by '\t' \
  --lines-terminated-by '\n' \
  --input-optionally-enclosed-by '\"' \
  --export-dir "${OUTPUTDIR}" -m 100 \
  -- --identity-insert

0 个答案:

没有答案