[WEB开发]织梦CMS移植到Discuz Portal

最近遇到一个问题,想从织梦CMS(dedecms)迁移到Discuz Portal数据库,其中最重要的问题是如何将栏目和大量的文章进行迁移。

涉及到的数据表有:

  • dede_addonarticle 文章表
  • dede_arctype 栏目表
  • dede_relation 新旧栏目对应关系表
  • pre_portal_article_content 文章表
  • pre_portal_article_title 文章题目表
  • pre_portal_article_count 文章浏览数表

1. 预处理旧表,合并 typename

1
2
3
UPDATE dede_addonarticle, dede_arctype 
SET dede_addonarticle.typename = dede_arctype.typename 
WHERE dede_arctype.id = dede_addonarticle.typeid;

2. 合并 click, title, writer, pubdate, keywords, description

1
2
3
4
5
6
7
8
9
UPDATE dede_addonarticle, dede_archives  
SET 
    dede_addonarticle.click = dede_archives.click, 
    dede_addonarticle.title = dede_archives.title, 
    dede_addonarticle.writer = dede_archives.writer, 
    dede_addonarticle.pubdate = dede_archives.pubdate, 
    dede_addonarticle.keywords = dede_archives.keywords, 
    dede_addonarticle.description = dede_archives.description 
WHERE dede_archives.id = dede_addonarticle.aid;

3. 生成 relation 新ID

1
2
3
UPDATE dede_relation, pre_portal_category 
SET dede_relation.catid = pre_portal_category.catid 
WHERE dede_relation.new = pre_portal_category.catname;

4. 根据 typenamerelation 填充 catid

1
2
3
UPDATE dede_addonarticle, dede_relation 
SET dede_addonarticle.catid = dede_relation.catid
WHERE dede_addonarticle.typename LIKE CONCAT("%", dede_relation.olds, "%");

5. 导入 Discuz Portal 表

插入 pre_portal_article_content(文章表)

1
2
3
INSERT INTO pre_portal_article_content(aid, title, content, dateline) 
SELECT aid, title, body, pubdate AS dateline 
FROM dede_addonarticle;

插入 pre_portal_article_title(文章题目表)

1
2
3
INSERT INTO pre_portal_article_title(aid, username, title, author, summary, dateline) 
SELECT aid, 'admin', title, writer AS author, description AS summary, pubdate AS dateline 
FROM dede_addonarticle;

插入 pre_portal_article_count(文章浏览数表)

1
2
3
INSERT INTO pre_portal_article_count(aid, cid, viewnum) 
SELECT aid, catid, click 
FROM dede_addonarticle;