Я пытаюсь загрузить таблицу с оракулом 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-файл создается сценарием unload ... и он работает;)
Важно : работает для ненулевых значенийдля столбца xml.
Я надеюсь, что есть способ изменить соответствующую строку в ctl-файле, но я пока не нашел решения.