将XML文件导入PostgreSQL

托马斯·格里夫(Tomas Greif)

我确实有很多要导入到表中的XML文件xml_data

create table xml_data(result xml);

为此,我有一个带有循环的简单bash脚本:

#!/bin/sh
FILES=/folder/with/xml/files/*.xml
for f in $FILES
do
  psql psql -d mydb -h myhost -U usr -c \'\copy xml_data from $f \'
done

但是,这将尝试将每个文件的每一行导入为单独的行。这导致错误:

ERROR:  invalid XML content
CONTEXT:  COPY address_results, line 1, column result: "<?xml version="1.0" encoding="UTF-8"?>"

我知道为什么会失败,但是无法弄清楚如何\copy一次将整个文件导入到单行中。

欧文·布兰德斯特(Erwin Brandstetter)

我会尝试另一种方法:将XML文件直接读入plpgsql函数内的变量,然后从那里继续。应该更快,更强大。

CREATE OR REPLACE FUNCTION f_sync_from_xml()
  RETURNS boolean AS
$BODY$
DECLARE
    myxml    xml;
    datafile text := 'path/to/my_file.xml';
BEGIN
   myxml := pg_read_file(datafile, 0, 100000000);  -- arbitrary 100 MB max.

   CREATE TEMP TABLE tmp AS
   SELECT (xpath('//some_id/text()', x))[1]::text AS id
   FROM   unnest(xpath('/xml/path/to/datum', myxml)) x;
   ...

您需要超级用户特权,并且文件必须是可访问目录中数据库服务器本地的文件
完整的代码示例,其中有更多说明和链接:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将XML文件导入PostgreSQL数据库

将 XML 数据导入 PostgreSQL

如何将大型XML文件(〜10GB)导入PostgreSQL

如何将JSON文件导入PostgreSQL?

将多个XML文件导入SoapUI

使用转换文件将 XML 文件导入 MS Access

将JSON文件的嵌套子级导入Postgresql

如何将 JSON 文件导入 postgresql 数据库?

如何将包含 JSON 的 CSV 文件导入 postgresql?

将多级(元素)XML 文件导入 MS SQL Server 表

无法将特定节点的内容从XML文件导入VBA

如何将数据从 XML 文件导入 HTML 表格

将XML文件导入InDesign时出现命名空间错误

将大型XML文件导入SQL Server CE

如何将xml文件导入到dart对象

通过Powerhsell将大型XML文件导入MSSQLExpress

将 XML 文件导入 Excel 仅显示根

如何使用VBA将多个XML文件导入Excel而不覆盖已经导入的文件

使用linq to XML将xml文件导入datagridview。数据无法正确显示

使用JAVA将标记从xml文件导入到另一个文件

如何通过Java代码将CSV文件数据导入到PostgreSQL表中?

将转储/ SQL文件导入到我的Linode上的PostgreSQL数据库中

试图通过python3将csv文件导入postgresql数据库

如何将备份文件大量导入到Postgresql数据库

使用R将多个csv文件导入到postgresql数据库中(内存错误)

如何将PostgreSQL .pgc文件导入Postgres数据库

如何将imdb列表文件导入Postgresql数据库?

当我使用`sequel`将数据从csv文件导入到postgresql中时出现错误

使用特定的行分隔符将 csv 文件导入 postgresql