我已经为Umbraco网站继承了一个数据库,我需要提取其内容以便可以将其加载到另一个CMS中。
我已经还原了SQL Server数据库,但仍然找不到实质上是“博客文章”的存储位置。
我想要做的是这样的:
SELECT *
FROM blogposts
谢谢
最佳答案
不幸的是,它不会那么简单。 umbraco中的几乎所有内容都在umbracoNode
表中表示。
然后,您拥有的所有自定义属性数据将存储在以下两个表中:cmsPropertyData
和cmsPropertyType
。
我发现我可以通过以下查询获得大部分所需信息:
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表示形式。您应该能够将其缩小为Blog Posts的xml表示形式。我还在this stackoverflow post上阅读过,您可以按文档类型将其导出为“包”。您可以转到
Developer->Packages->Created packages
,然后右键单击以创建。然后在Package Contents
选项卡中,只需检查Blog Post文档类型。不知道这对您是否有用,因为我自己还没有尝试过。看起来很有希望。关于sql - 内容存储在Umbraco数据库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32358238/