首页 > 解决方案 > 如何将 xml 文件“复制”到 PostgreSQL?

问题描述

尝试将 .xml 文件或 .txt 文件的内容导入 PostgreSQL 中的 .xml 或 char(variing) 列。该命令是

    COPY wed4(xml) FROM '/h:/test.xml';

或者

    COPY wed4(text) FROM '/h:/test.txt';

为什么这不起作用的新“借口”是 Postgre 无法打开文件;“无效参数”和“ SQL 状态:XX000。

注意:我只是尝试使用 .txt 文件,因为我在处理 .xml 文件时遇到了很多麻烦,而且我(错误地)认为它们可能更容易使用并为我提供一些线索解决问题。最终我将不得不使用 psycopg2 导入大量 .xml 文件的内容,因为它们的内部结构并不完全相同,因此无法将内容轻松拆开并插入到表格中。然而,作为一整套 .xml 文本,它们可以被查询。

我在 pgadmin 中执行此操作,而不是在 psql shell 中执行此操作。

是的,我在 Windows 上使用 PostgreSQL 11(在这件事上我别无选择)。有什么线索、想法、建议吗?

标签: xmlpostgresqlcopy

解决方案


表结构

CREATE TABLE xmldata4 (data4 xml);

COPY使用..导入

COPY xmldata4 FROM '/home/jones/user8016440.xml';

.. 或在INSERT声明中

INSERT INTO xmldata4(data4) VALUES ('<hotel666> <METADATA> <Tags> <AcquisitionTime>2018-10-09T10:37:18.5268832+02:00</AcquisitionTime> <DetectorState>&lt;CameraState Id=""&gt; &lt;ApplyCameraProfile&gt;false&lt;/ApplyCameraProfile&gt; &lt;/CameraState&gt;</DetectorState> <RoiCenterOffsetX>+000000000000.0000</RoiCenterOffsetX> <RoiCenterOffsetY>+000000000000.0000</RoiCenterOffsetY> </Tags> <DataSchema /> <AttachmentSchema /> </METADATA> </hotel666>');

使用以下方式查询 xml XPATH

SELECT XPATH('//AcquisitionTime/text()',data4) FROM xmldata4 ;
                xpath                
-------------------------------------
 {2018-10-09T10:37:18.5268832+02:00}
(1 Zeile)

推荐阅读