相关疑难解决方法(0)

来自转储的Wikipedia类别层次结构

使用Wikipedia的转储我想为其类别构建层次结构.我已经下载了主转储(enwiki-latest-pages-articles)和类别SQL转储(enwiki-latest-category).但我找不到层次结构信息.

例如,SQL类别的转储包含每个类别的条目,但我找不到任何关于它们如何相互关联的信息.

另一个转储(latest-pages-articles)表示每个页面的父类别,但是以无序方式.它只是陈述了所有的父母.

我见过wikiprep的类别层次结构(http://www.cs.technion.ac.il/~gabr/resources/code/wikiprep/)......这个是如何构建的?Wikiprep列出了类别ID,而不是其名称.有没有办法获得每个ID的名称?

mediawiki wikipedia dump categories wikipedia-api

11
推荐指数
1
解决办法
6474
查看次数

防止 Postgresql 递归查询中的无限循环

对不起 - 这有点含糊......

这里:(在 CTE 中找到无限递归循环)讨论了如何防止递归查询中出现无限循环。在“查询级别”上阻止了递归 - 至少在关于 Postgresql 的答案中是这样。

Postgresql (10) 有没有办法实现某种安全网来防止无限递归?这是一种可行的方法,statement_timeout还是有其他广泛接受的方法?

postgresql recursive-query common-table-expression

8
推荐指数
1
解决办法
4544
查看次数

在postgres中防止和/或检测周期

假设有如下模式:

CREATE TABLE node (
  id       SERIAL PRIMARY KEY,
  name     VARCHAR,
  parentid INT REFERENCES node(id)
);
Run Code Online (Sandbox Code Playgroud)

此外,我们假设存在以下数据:

INSERT INTO node (name,parentid) VALUES
('A',NULL),
('B',1),
('C',1);
Run Code Online (Sandbox Code Playgroud)

有没有办法防止创建周期?例:

UPDATE node SET parentid = 2 WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)

这将创造一个循环 1->2->1->...

postgresql triggers plpgsql recursive-query

6
推荐指数
1
解决办法
1548
查看次数

自上而下的树postgres的递归路径聚合和CTE查询

我正在尝试编写一个查询,以生成给定根的树中所有节点的列表,以及路径(使用父级给他们孩子的名称)到达那里的路径.我工作的递归CTE是直接来自这里的文档的教科书CTE ,然而,事实证明在这种情况下使路径工作很困难.

在git模型之后,由于遍历树创建的路径,父母会将名称提供给子级.这意味着映射到git的树结构等子id.

我一直在网上寻找递归查询的解决方案,但它们似乎都包含使用父ID或物化路径的解决方案,这些都会破坏Rich Hickey的数据库作为价值谈话的结构共享概念.

目前的实施

想象一下,对象表很简单(为简单起见,我们假设整数id):

drop table if exists objects;
create table objects (
    id INT,
    data jsonb
);

--       A
--     /   \
--    B     C
--   /   \    \
--  D     E    F

INSERT INTO objects (id, data) VALUES
  (1, '{"content": "data for f"}'),  -- F
  (2, '{"content": "data for e"}'),  -- E
  (3, '{"content": "data for d"}'),  -- D
  (4, '{"nodes":{"f":{"id":1}}}'),               -- C
  (5, '{"nodes":{"d":{"id":2}, "e":{"id":3}}}'), -- B
  (6, …
Run Code Online (Sandbox Code Playgroud)

postgresql recursive-query common-table-expression

6
推荐指数
1
解决办法
4488
查看次数

使用sql检测周期

我想检测层次结构中的潜在循环。我有三张表,每张表都有一个父列和一个子列:

Table1的父母是Table2的孩子,Table2的父母是Table3的孩子

表1包含一些节点(在子列中)及其父节点(在父列中);Table2 包含 Table1 的所有父级(在 child 列中)及其父级(在 parent 列中),依此类推。

例如,如果 A 是 B 的孩子,B 是 C 的孩子,C 是 A 的孩子,那么我有一个循环。

是否可以使用 sql 命令检测周期?

sql postgresql hierarchical-data

2
推荐指数
1
解决办法
1722
查看次数