要启动此功能:是的,我已阅读this post有关OpenXML和postgres的内容。
6年后仍然如此吗?
如果是这样,我的公司正在从MS SQL Server转换为Postgres,有很多存储过程,其中许多都依赖于OpenXML。为每个可能希望从我们的XML中检索的东西写出xpath()
似乎相当麻烦。你有什么建议去转换吗?我还没有看到xpath()
更好的替代方案呢?
谢谢!
答案 0 :(得分:2)
经过大量研究后:
1)是的,它似乎是这样。
2)是的,这是一种痛苦,制作了一个内部程序,它抓住了潜在的XML路径并为我们创建了一个脚本,只需要手工调整一些。
由于
答案 1 :(得分:1)
PostgreSQL 中的模拟 OPENXML(希望 xmltable 按照它们在输入 xml 中出现的顺序查看节点):
CREATE OR REPLACE FUNCTION openxml (
p_xml xml
)
RETURNS TABLE (
id integer,
parent_id integer,
element_name text,
element_data text
) AS
$body$
DECLARE
BEGIN
return query
with t as (SELECT *
from xmltable('//*'
passing p_xml
columns
id for ORDINALITY,
element_name text path 'local-name()',
parent_name text path 'local-name(..)',
element_data text path 'text()[1]'
))
select t.id,
(select max(t1.id) from t t1 where t1.id<t.id and t.parent_name=t1.element_name)as parent_id,
t.element_name,
t.element_data
from t;
END;
$body$
LANGUAGE 'plpgsql';