gpt4 book ai didi

sql - 将数据从一个表(triplestore)插入到另一个表(属性表)

转载 作者:行者123 更新时间:2023-11-29 13:34:36 28 4
gpt4 key购买 nike

我需要将 RDF 数据从三元组传输到属性表。下面给出了三重存储和属性表的示例。

三重存储

Subject Property Object
Sub1 prop1 hello
Sub2 prop1 hello1
Sub3 prop1 hello2
Sub1 prop2 world
Sub2 prop2 world1
Sub3 prop2 world2
Sub4 prop3 random

属性表1

Subject prop1 prop2
Sub1 hello world
Sub2 hello1 world1
Sub3 hello2 world2

属性表2

Subject prop3
Sub4 random

这是我使用的数据集的一个非常简化的版本。 triplestore 表中有大约一百万条记录。根据各种属性和对象的各种分组,必须创建不止一个属性表。我已经确定并创建了各种属性表?组成属性表的属性是以这样一种方式选择的,即一个主题完全包含在一个属性表中?

我面临的问题是将数据从三重存储插入属性表。有没有一种方法可以在单个插入语句中将特定主题的数据插入到属性表的一行中。如果不能在单个查询中完成,最有效的方法是什么。

我正在使用 python 创建一个 SQL 查询转储,稍后我会在 postgres 服务器上运行它。

最佳答案

如果您有一组已知的固定属性,这很容易。如果您没有一组已知的固定属性,则必须从您的应用程序、PL/PgSQL 或使用 tablefunc 扩展中的 crosstab 函数生成动态 SQL .

对于固定属性集,您可以自行加入:

http://sqlfiddle.com/#!12/391b7/6

SELECT p1."Subject", p1."Object" AS "prop1", p2."Object" AS "prop2"
FROM triplestore p1
INNER JOIN triplestore p2 ON (p1."Subject" = p2."Subject")
WHERE p1."Property" = 'prop1'
AND p2."Property" = 'prop2'
ORDER BY p1."Subject";

SELECT p1."Subject", p1."Object" AS "prop1"
FROM triplestore p1
WHERE p1."Property" = 'prop3'
ORDER BY p1."Subject";

要将这些转换为 INSERTs,只需使用 INSERT ... SELECT 例如:

INSERT INTO "Property Table 1"
SELECT p1."Subject", p1."Object" AS "prop1"
FROM triplestore p1
WHERE p1."Property" = 'prop3'
ORDER BY p1."Subject";

关于sql - 将数据从一个表(triplestore)插入到另一个表(属性表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16127878/

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