Здравствуйте, уважаемые участники форума.
Необходимо поместить данные, содержащиеся в большом xml-файле, в таблицу. Создал таблицу с одним столбцом, имеющим тип xml, после чего попытался выполнить следующее:
COPY xmltest FROM '/home/alexey/projects/test/ProductData.xml';
Получил ошибку:
[2200N] ERROR: invalid XML content
Detail: line 1: XML declaration allowed only at the start of the document <?xml version="1.0" encoding="utf-8"?>
Подумал, что Postgres`у не нравится кодировка. Проверил файл командой:
file ProductData.xml
Получил ответ:
ProductData.xml: XML 1.0 document, UTF-8 Unicode (with BOM) text, with CRLF line terminators
Удалил ВОМ командой:
sed -i '1s/^\xEF\xBB\xBF//' orig.txt
После этого file показывает:
ProductData.xml: XML 1.0 document, UTF-8 Unicode text, with CRLF line terminators
Снова пытаюсь выполнить импорт той же инструкцией:
COPY xmltest FROM '/home/alexey/projects/test/ProductData.xml';
Получаю ответ:
[2200N] ERROR: invalid XML content
Detail: line 1: Premature end of data in tag ProductData line 1
g/2001/XMLSchema" xsi:noNamespaceSchemaLocation="Productgegevens_insbou003.xsd">
Помогите, пожалуйста.
UPD: Разобрался - надо было, оказывается, удалить знаки перевода строки и табуляции.