我继承了Umbraco网站的数据库,我需要提取内容,以便将其加载到另一个CMS中。
我已经恢复了SQL Server数据库,但仍然无法找到存储本质上“博客帖子”的位置。
我希望做的是:
SELECT *
FROM blogposts
由于
答案 0 :(得分:7)
不幸的是,它不会那么简单。 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表示。您应该能够将其修剪为博客帖子的xml表示。
我还在this stackoverflow post阅读您可以按文档类型导出为包。您可以转到Developer->Packages->Created packages
并右键单击以创建。然后在Package Contents
标签中,查看Blog Post文档类型。不确定这对你有用,因为我自己没有尝试过。看起来很有希望。