Импортировать xml документ как PostgreSQL таблицу - PullRequest
0 голосов
/ 13 марта 2020

У меня следующая XML структура документа. Данные хранятся в виде атрибутов внутри <item> элементов. Атрибутом body является форматированный текст.

<?xml version="1.0" encoding="utf-8"?>
<items>
  <item Id="1" Body="&lt;p&gt;Data1&lt;/p&gt;&#xA;&#xA;&lt;p&gt;Data1 &lt;/p&gt;&#xA;" />
  <item Id="2" Body="&lt;p&gt;Data2&lt;/p&gt;&#xA;&#xA;&lt;p&gt;Data2 &lt;/p&gt;&#xA;" />
</items>

Импорт в таблицу PostgreSQL:

select 
     (xpath('//item/@Id', items))[1]::text::bigint AS id,
     (xpath('//item/@Body', items))[1]::text AS body,
from 
    unnest(xpath('//item', xmlparse(document convert_from(pg_read_binary_file('items.xml'), 'utf8')))) as items;

Я получаю следующую ошибку:

ERROR:  could not parse XML document
DETAIL:  line 109749: internal error: Huge input lookup
 as well. Will these deposits be an issue or a probable cause of rejection?&lt;/
                                                                               ^
line 109749: attributes construct error

^
line 109749: Couldn't find end of Start Tag item line 109749

^
line 109749: EndTag: '</' not found

При попытке попробовать этот пример небольшие наборы данных в порядке. Когда я пытаюсь импортировать более 100000 записей, происходит сбой.

...