注意,迁移之前一定要全部备份。 我在迁移评论的时候不小心把旧博客的评论表数据给清空了,还好有数据备份。 文章迁移脚本 此脚本需要先将分类表手动迁移,注意ID以及名称要和原来的一致
代码语言:javascript复制# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@ Author :Lan
@ Blog :www.lanol.cn
@ Date : 2021/6/29
@ Description:I'm in charge of my Code
-------------------------------------------------
"""
import time
import pymysql
HOST = "数据库HOST地址"
USER = "数据库用户名"
PASSWORD = "数据库密码"
PORT = 数据库端口
db = pymysql.connect(HOST, USER, PASSWORD, "旧数据库名称", PORT, charset='utf8')
selectSql = "select * from zbp_post where log_cateID!=0 and log_ID!=436"
cursor = db.cursor()
cursor.execute(selectSql)
source = cursor.fetchall()
db.close()
db = pymysql.connect(HOST, USER, PASSWORD, "新数据库名称", PORT, charset='utf8')
cursor = db.cursor()
a = 1
for i in source:
cid = i[0]
title = i[9].replace("'", '"')
slug = i[0]
created = i[12]
modified = i[12]
text = i[11].replace('{#ZC_BLOG_HOST#}', '新的博客地址')
order = 0
authorid = 1
template = None
type = 'post'
status = 'publish'
password = ''
commentsNum = i[13]
allowComment = 1
allowPing = 1
allowFeed = 1
parent = 0
views = i[14]
agree = 0
try:
insertSql = f"INSERT INTO typecho_contents VALUES({cid},'{title}','{slug}','{created}','{modified}','{text}','{order}','{authorid}',NULL,'{type}','{status}','{password}','{commentsNum}','{allowComment}','{allowPing}','{allowFeed}','{parent}','{views}','{agree}') "
cursor.execute(insertSql)
insertSql = f"Insert into typecho_relationships values('{cid}','{i[1]}')"
cursor.execute(insertSql)
db.commit()
print(f'{cid}迁移成功')
except:
print(f'{cid}迁移失败')
db.commit()
db.close()
评论数据迁移脚本
代码语言:javascript复制# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@ Author :Lan
@ Blog :www.lanol.cn
@ Date : 2021/6/29
@ Description:I'm in charge of my Code
-------------------------------------------------
"""
import pymysql
import time
HOST = "数据库HOST地址"
USER = "数据库用户名"
PASSWORD = "数据库密码"
PORT = 数据库端口
db = pymysql.connect(HOST, USER, PASSWORD, "旧数据库名称", PORT, charset='utf8')
selectSql = "select * from zbp_comment"
cursor = db.cursor()
cursor.execute(selectSql)
source = cursor.fetchall()
db.close()
db = pymysql.connect(HOST, USER, PASSWORD, "新数据库名称", PORT, charset='utf8')
cursor = db.cursor()
for i in source:
cid = i[1]
created = i[10]
author = i[6]
authorId = i[5]
ownerid = i[5]
mail = i[7]
url = i[8]
ip = i[11]
agent = i[12]
text = i[9]
type = 'comment'
status = 'approved'
parent = i[4]
try:
insertSql = f"Insert into typecho_comments values (NULL ,'{cid}','{created}','{author}','{authorId}','{ownerid}','{mail}','{url}'"
f",'{ip}','{agent[:100]}','{text}','{type}','{status}','{parent}')"
cursor.execute(insertSql)
db.commit()
except:
print(f'{cid}迁移失败')
db.commit()
db.close()