我需要翻译一个关于 IT 技术的文本。其中涉及到一个 Umbraco 网站的数据库,我需要提取内容并加载到另一个 CMS 中。
我已经恢复了 SQL Server 数据库,但我仍然无法找到存储类似“博客文章”的内容在哪里。
我的目标是实现以下操作:
SELECT *
FROM blogposts
谢谢
我需要翻译一个关于 IT 技术的文本。其中涉及到一个 Umbraco 网站的数据库,我需要提取内容并加载到另一个 CMS 中。
我已经恢复了 SQL Server 数据库,但我仍然无法找到存储类似“博客文章”的内容在哪里。
我的目标是实现以下操作:
SELECT *
FROM blogposts
谢谢
很遗憾,事情并不会那么简单。在Umbraco中,几乎所有的东西都在umbracoNode
表中有对应。
然后,您所有的自定义属性数据都将存储在这些表中:
Umbraco 7
cmsPropertyData
cmsPropertyType
Umbraco 8+
umbracoPropertyData
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
进行更多的连接以获取最新数据。
版本数据存储在以下表中:
Umbraco 7:
cmsContentVersion
Umbraco 8+:
umbracoContentVersion
如果您正在使用Umbraco 7,则可以考虑尝试绕过一些数据库查询,并尝试使用已经存在的磁盘上的xml缓存。您可以在App_Data\umbraco.config
中找到所有已发布内容的xml表示形式。您应该能够将其缩小到仅包含博客文章的xml表示形式。
开发人员->包->已创建的包
并右键创建。然后在包内容
选项卡中,只需勾选博客文章文档类型即可。不确定这对你是否有用,因为我自己没有尝试过。看起来很有前途。
umbracoNode.nodeObjectType
是否被使用了?我在数据库中找不到其他 GUID 列... - AzimuthumbracoNode
表中存储的不仅仅是内容节点。还有一些其他的东西,比如数据类型。通过查看nodeObjectType
字段,您可以确定您感兴趣的umbracoNode
记录是文档类型、内容节点还是数据类型记录。 - bowserm