PostgreSQL大XML文件解析

时间:2018-11-26 16:54:52

标签: xml postgresql bigdata large-files

我是PostgreSQL的新手。我正在建立数据库,而XML文件有问题。此XML文件具有986 MB或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 :(得分:0)

您在数据库中不能合理地拥有这样大小的xml。它低于理论上的1GB限制,但是正如您所注意到的那样,问题开始的时间要早​​得多,因为整个对象必须驻留在RAM中。

无论如何,您都无法在PostgreSQL中合理地处理该大小的XML。

如果您只想存储大文件,则不要将其存储在数据库中或使用大对象。