内容存储在Umbraco数据库中的哪个位置?

时间:2015-09-02 16:21:47

标签: sql sql-server umbraco

我继承了Umbraco网站的数据库,我需要提取内容,以便将其加载到另一个CMS中。

我已经恢复了SQL Server数据库,但仍然无法找到存储本质上“博客帖子”的位置。

我希望做的是:

SELECT * 
FROM blogposts

由于

1 个答案:

答案 0 :(得分:7)

不幸的是,它不会那么简单。 umbraco中的几乎所有内容都在umbracoNode表中表示。

然后,您拥有的所有自定义属性数据都将存储在这两个表中:cmsPropertyDatacmsPropertyType

我发现我可以通过这样的查询获得我想要的大部分内容:

SELECT TOP 1000 *
FROM cmsPropertyData pd
INNER JOIN cmsPropertyType pt
    ON pt.id = pd.propertytypeid
INNER JOIN umbracoNode n
    ON n.id = pd.contentNodeId
WHERE n.id = 1853

但是,您在获得有关特定文档类型的信息之后,所以您可能看起来更像这样:

SELECT TOP 1000 *
FROM cmsPropertyData pd
INNER JOIN cmsPropertyType pt
    ON pt.id = pd.propertytypeid
INNER JOIN cmsContent c
    ON c.nodeId = pd.contentNodeId
INNER JOIN cmsContentType ct
    ON ct.nodeId = c.contentType
WHERE ct.alias = 'BlogPost'

然后,您可能会为每个博客帖子节点的多个版本获取数据,因此您需要与cmsContentVersion表进行更多联接以获取最新数据

您可能会考虑尝试避开某些数据库查询,并尝试在已存在的磁盘上使用xml缓存。您可以在App_Data\umbraco.config找到所有已发布内容的xml表示。您应该能够将其修剪为博客帖子的xml表示。

我还在this stackoverflow post阅读您可以按文档类型导出为包。您可以转到Developer->Packages->Created packages并右键单击以创建。然后在Package Contents标签中,查看Blog Post文档类型。不确定这对你有用,因为我自己没有尝试过。看起来很有希望。