【发布时间】:2019-10-17 11:41:31
【问题描述】:
我正在尝试使用 oracle sqlldr 加载表,但在(允许!)空字段上获得 ORA-19032: Expected XML tag, got no content。
如果表由插入填充,或者列更新为空,一切都很好。但是通过sqlldr 加载不起作用。
加载程序调用:
sqlldr $DBCS control=$TABLE.ctl data=$TABLE.csv bad=$LOGDIR/$TABLE.bad log=$LOGDIR/$TABLE.log rows=10000 bindsize=20000000 readsize=20000000 silent=header,feedback
CTL 文件:
LOAD DATA
INFILE MY_TABLE.csv "STR '|\n'"
INTO TABLE MY_TABLE APPEND
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"NORMAL_COLUMN1" CHAR(40)
, "NORMAL_COLUMN2" CHAR(250)
, "NORMAL_COLUMN3" CHAR(250)
, "XML_COLUMN" CHAR(16000)
)
表定义:
CREATE TABLE MY_TABLE
(
NORMAL_COLUMN1 NUMBER(14) not null,
NORMAL_COLUMN2 VARCHAR2(250) not null,
NORMAL_COLUMN3 VARCHAR2(250),
XML_COLUMN SYS.XMLTYPE
);
csv 行 - 不工作:
21001;"lulul";"lalal";|
csv 行 - 工作:
21001;"lulul";;"<a>ala</a>"|
注意:一般来说,我会为“普通列”创建“正确”数据类型,但 ctl 文件是由卸载脚本创建的......并且它可以工作;)
重要:它适用于 xml 列的非空值。
希望有办法修改ctl-File中的对应行,但目前还没有找到解决办法。
【问题讨论】:
标签: oracle sql-loader