Разбор больших XML-файлов в PostgreSQL - PullRequest
0 голосов
/ 26 ноября 2018

Я новичок в PostgreSQL.Я делаю базу данных, и у меня проблема с файлом XML.Этот XML-файл имеет 986 МБ или 1029949618 байт, и я попробовал несколько сценариев, но у меня есть ошибка типа:

Error: out of memory
Detail: String of 1029949618 bytes is too long for encoding conversion.

Как это исправить?Пожалуйста, помогите мне.

Это скрипт, который я пробовал:

            create or replace function xml_import(filename text)
        returns xml
        volatile
        language plpgsql as
        $f$
            declare
                content bytea;
                loid oid;
                lfd integer;
                lsize integer;
            begin
                loid := lo_import(filename);
                lfd := lo_open(loid,1029949618);
                lsize := lo_lseek(lfd,0,2);
                perform lo_lseek(lfd,0,0);
                content := loread(lfd,lsize);
                perform lo_close(lfd);
                perform lo_unlink(loid);

                return xmlparse(document convert_from(content,'WIN1251'));
            end;
        $f$;

        select xml_import('D:\SQLregisterUkr\15.1-EX_XML_EDR_UO.xml');

1 Ответ

0 голосов
/ 26 ноября 2018

Вы не можете разумно иметь xml такого размера в базе данных.Он ниже теоретического предела в 1 ГБ, но, как вы заметили, проблемы начинаются гораздо раньше, поскольку весь объект должен будет находиться в ОЗУ.

Вы все равно не можете разумно обрабатывать XML такого размера в PostgreSQL.

Если все, что вам нужно, это сохранить большой файл, то не храните его в базе данных или не используйте большой объект.

...