我正在尝试从较旧的Orchard数据库导出数据,并且在查找存储博客文章内容的表时遇到问题。我已经尝试使用许多不同的“搜索所有列”spoc来搜索所有表和列,但我没有从帖子本身找到文本。
如果我有一篇博文,开头的句子是:这句话包含一个独特的单词。
我本来期望各种“搜索所有列”示例中的至少一个已经出现了一个表/列。但到目前为止,没有人。
谢谢
Orchard存储数据基于两个表,ContentItemRecord
和ContentItemVersionRecord
,存储内容项的元数据,如BlogPost
,这些内容项由多个部分构建,每个部分都有它的表,项目与它的部分之间的关系基于Id
(如果不是draftable)或ContentItemRecord_Id
(如果draftable)列
如果我们把BlogPost
类型作为例子,它是从TitlePart
,BodyPart
,AutoroutePart
和CommonPart
构建的,你想要选择post(id = 90)的所有数据,那么你可以在TitlePartRecord
表(ContentItemRecord_Id = 90
)中找到它的标题,并且BodyPartRecord
表中的正文文本与标题部分记录具有相同的关系,AutorouteRecord
表中具有相同关系的路径部分,以及CommonPartRecord
中的公共元数据(Id = 90)。
这是从Orchard数据库中提取数据的方法,希望这对您有所帮助。
Tnx到@mdameer ......以及madmeer答案的相关查询是这样的:
SELECT * FROM dbo.default_Title_TitlePartRecord
inner join dbo.default_Orchard_Framework_ContentItemRecord on
dbo.default_Title_TitlePartRecord.ContentItemRecord_id=dbo.default_Orchard_Framework_ContentItemRecord.Id
inner join dbo.default_Common_BodyPartRecord on
dbo.default_Common_BodyPartRecord.ContentItemRecord_id=dbo.default_Orchard_Framework_ContentItemRecord.Id
where dbo.default_Title_TitlePartRecord.ContentItemRecord_id=90
这就是权利解决方案
为了防止对其他人有用,以下是用于将Orchard实例迁移到Umbraco的实际SQL查询。它来源于mdameerand和Iman Salehi的优秀答案:
SELECT t.Title, f.Data, b.Text FROM dbo.Title_TitlePartRecord t
inner join dbo.Orchard_Framework_ContentItemRecord f on
t.ContentItemRecord_id=f.Id
inner join dbo.Common_BodyPartRecord b on
b.ContentItemRecord_id=f.Id
AND b.Id = (
SELECT MAX(m2.Id)
FROM dbo.Common_BodyPartRecord m2
WHERE m2.ContentItemRecord_id = f.Id
)
AND t.Id = (
SELECT MAX(m2.Id)
FROM dbo.Title_TitlePartRecord m2
WHERE m2.ContentItemRecord_id = f.Id
)