WAS配置postgresql运行etl报错
公司有在用WAS掉用ETL包同步数据,目标是DB2,今天需要用postgresql的数据库作为数据来源。参照网上的配置方法,用通用JDBC配上了,没有写helper类,所以有警告。但实际抽取数据时报错。
出错的日志如下:
DBWSQWR 2014-01-15 18:45:37
SQW03275I: Execution of SQL statement "DECLARE GLOBAL TEMPORARY TABLE SESSION."T_815D1595801A563"( "reg_id" BIGINT, "his_pt_id" VARCHAR(128), "patient_name" VARCHAR(128), "identity_no" VARCHAR(64), "card_no" VARCHAR(128), "rx_code" VARCHAR(128), "doctor_code" VARCHAR(64), "doctor_name" VARCHAR(128), "dept_code" VARCHAR(128), "dept_name" VARCHAR(128), "rx_time" VARCHAR(64), "puncture_time" VARCHAR(64), "age" BIGINT, "reg_time" VARCHAR(64)) NOT LOGGED ON COMMIT PRESERVE ROWS" through JDBC connection finished successfully
DBWSQWR 2014-01-15 18:45:54
JDBCExtractor: SQL Exception: SQL state = 25P01; error code = 0; error Message = Cannot rollback when autoCommit is enabled.
DBWSQWR 2014-01-15 18:45:54
JDBCInsert: Exception: 数据库服务器返回了错误代码0 和 SQLException Cannot rollback when autoCommit is enabled.
DBWSQWR 2014-01-15 18:45:54
SQW03563E: Failure to execute Java class com.ibm.datatools.etl.dataflow.baselib.runtimeunits.JDBCInsert. Exception: 数据库服务器返回了错误代码0 和 SQLException Cannot rollback when autoCommit is enabled.
好像是将数据插入零时表出错,因为是跨平台的,所以把大多数字段直接处理成了VARCHER长度上基本翻了一番。正常的Oracle数据执行日志如下:
DBWSQWR 2014-01-09 00:02:14
SQW03275I: Execution of SQL statement "DECLARE GLOBAL TEMPORARY TABLE SESSION."T_94F59DD434DBFF3"( PATID CHAR(32), CARDNO CHAR(32), PATOPNO CHAR(32), VISITNO CHAR(32), PATADNO CHAR(32), VISITNUM CHAR(32), SURGERYNO VARCHAR(32), SURGERYDATE VARCHAR(32), CANCELDATE CHAR(32), SURGERYCODE CHAR(32), SURGERYNAME CHAR(128), INCISIONLEVEL VARCHAR(32), HEALINGCLASS VARCHAR(32), SURGEONEMPID CHAR(32), SURGEONCODE VARCHAR(32), TUTORDOCEMPID CHAR(32), TUTORDOCCODE CHAR(32), FSTASSISTANTEMPID CHAR(32), FSTASSISTANTCODE VARCHAR(32), SECASSISTANTEMPID CHAR(32), SECASSISTANTCODE VARCHAR(32), PRODIAG CHAR(32), AFTERDIAG CHAR(32), IATROSURGICAL CHAR(32), SURSOURCE CHAR(32), ANESTHCODE CHAR(32), ANESTHNAME CHAR(32), ANESTHREACT CHAR(32), ANESTHDOCEMPID CHAR(32), ANESTHDOCCODE VARCHAR(32), COMPLICATIONS CHAR(32), SURGERYGROUPNO VARCHAR(32), PRIMARYFLAG CHAR(32), NONINVASIVESURGERY CHAR(32), SURGERYDEPT CHAR(32), OBSTETRICDEPT CHAR(32), SURGERYCON VARCHAR(32), FLAG_DATE CHAR(32), FLAG CHAR(32), OBJECTKEY VARCHAR(160)) NOT LOGGED ON COMMIT PRESERVE ROWS" through JDBC connection finished successfully
DBWSQWR 2014-01-09 00:02:23
Execution of Java class com.ibm.datatools.etl.dataflow.baselib.runtimeunits.JDBCInsert finished successfully.
DBWSQWR 2014-01-09 00:02:23
SQW03201I: com.ibm.datatools.etl.dataflow.baselib.runtimeunits.JDBCInsert task completed successfully
看的出JDBCInsert成功执行,请高手解释下JDBCInsert是什么,为什么会错?希望有做过这方面的前辈指点下WAS处理postgresql