我正在尝试通过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