在postgresql中导入xml数据

在postgresql中导入xml数据,xml,postgresql,postgresql-9.1,Xml,Postgresql,Postgresql 9.1,我尝试从XML插入postgresql表数据 这是示例XML: <?xml version="1.0" encoding="UTF-8"?> <ActualStatuses> <ActualStatus ACTSTATID="0" NAME="Not actual" /> <ActualStatus ACTSTATID="1" NAME="Актуальный" /> </ActualStatuses> 对于将值从XML插

我尝试从XML插入postgresql表数据 这是示例XML:

<?xml version="1.0" encoding="UTF-8"?>
<ActualStatuses>
   <ActualStatus ACTSTATID="0" NAME="Not actual" />
   <ActualStatus ACTSTATID="1" NAME="Актуальный" />
</ActualStatuses>
对于将值从XML插入postgresql表,我使用精简查询:

INSERT INTO actualstatuses(
    SELECT
        (xpath('//ActualStatus/@ACTSTATID', myTempTable))[1]::text::bigint AS ACTSTATID,
        (xpath('//ActualStatus/@NAME', myTempTable))[1]::text AS NAME
    FROM
        unnest(xpath('//ActualStatus', convert_from(public.bytea_import('C:/fias/update/AS_ACTSTAT.XML'), 'utf8')::xml)) AS myTempTable);
并且有语法分析器错误:

invalid XML content
SQL-status: 2200N
Entity: line 1: parser error : XML declaration allowed only at the start of the document
<?xml version="1.0" encoding="utf-8"?><AddressObjectTypes><AddressObjectType 

但如果我在XML中删除,这项工作将非常好。我有大约20个XML文件,其中一些非常大。如何消除此错误?

对我很有效。请发布更多详细信息:特别是您如何尝试导入多个文件。@RadekPostołowicz我为所有文件创建了sql查询,但我认为它可以通过ńń循环实现
   INSERT INTO actualstatuses(
    SELECT
        (xpath('//ActualStatus/@ACTSTATID', myTempTable))[1]::text::bigint AS ACTSTATID,
        (xpath('//ActualStatus/@NAME', myTempTable))[1]::text AS NAME
    FROM
        unnest(xpath('//ActualStatus', replace(convert_from(bytea_import('C:/fias/update/AS_ACTSTAT.XML'), 'utf8'),'<?xml version="1.0" encoding="utf-8"?>','')::xml)) AS myTempTable);
   INSERT INTO actualstatuses(
    SELECT
        (xpath('//ActualStatus/@ACTSTATID', myTempTable))[1]::text::bigint AS ACTSTATID,
        (xpath('//ActualStatus/@NAME', myTempTable))[1]::text AS NAME
    FROM
        unnest(xpath('//ActualStatus', replace(convert_from(bytea_import('C:/fias/update/AS_ACTSTAT.XML'), 'utf8'),'<?xml version="1.0" encoding="utf-8"?>','')::xml)) AS myTempTable);