gpt4 book ai didi

postgresql - 将 xml 调试到 postgres,一列 myxml 不存在?

转载 作者:行者123 更新时间:2023-11-29 14:34:16 25 4
gpt4 key购买 nike

CREATE OR REPLACE FUNCTION f_sync_from_xml()
RETURNS boolean AS
$BODY$
DECLARE
myxml xml;
datafile text := 'Questo PC/Documenti/ABBATE_EMANUELE_Lvl1F2Va_20160418-1759.xml';
BEGIN

myxml := pg_read_file(datafile, 0, 100000000);

END;
$BODY$ language plpgsql;


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

在最后一行 myxml 给出了列不存在的错误。

最佳答案

在声明变量 myxml 的函数体内放置语句

CREATE OR REPLACE FUNCTION f_sync_from_xml()
RETURNS boolean AS
$BODY$
DECLARE
myxml xml;
datafile text := 'Questo PC/Documenti/ABBATE_EMANUELE_Lvl1F2Va_20160418-1759.xml';
BEGIN

myxml := pg_read_file(datafile, 0, 100000000);

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

另外 - 如果你只是在每次执行时创建一个表 - 第二次执行会给你错误,那个表存在

你可以使用IF NOT EXISTS:

t=# create temp table if not exists tmp as select now();
SELECT 1
Time: 57.280 ms
t=# create temp table if not exists tmp as select now();
NOTICE: relation "tmp" already exists, skipping
CREATE TABLE AS
Time: 0.223 ms

关于postgresql - 将 xml 调试到 postgres,一列 myxml 不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47411880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com