问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库

发布网友 发布时间:2022-04-28 18:20

我来回答

1个回答

热心网友 时间:2022-05-02 04:25

import re
import fileinput

def this_line_is_useless(line):
useless_es = [
'BEGIN TRANSACTION',
'COMMIT',
'sqlite_sequence',
'CREATE UNIQUE INDEX',
]
for useless in useless_es:
if re.search(useless, line):
return True

def has_primary_key(line):
return bool(re.search(r'PRIMARY KEY', line))

searching_for_end = False
for line in fileinput.input():
if this_line_is_useless(line): continue

if re.match(r".*, ''\);", line):
line = re.sub(r"''\);""''\);", r'``);', line)
if re.match(r'^CREATE TABLE.*', line):
searching_for_end = True

m = re.search('CREATE TABLE "?([a-z0-9_]*)"?(.*)', line)
if m:
name, sub = m.groups()
line = "DROP TABLE IF EXISTS %(name)s;\nCREATE TABLE IF NOT EXISTS `%(name)s`%(sub)s\n"
line = line % dict(name=name, sub=sub)
else:
m = re.search('INSERT INTO "([a-z0-9_]*)"(.*)', line)
if m:
line = 'INSERT INTO %s%s\n' % m.groups()
line = line.replace('"', r'\"')
line = line.replace('"', "'")
line = re.sub(r"([^'])'t'(.)", "\1THIS_IS_TRUE\2", line)
line = line.replace('THIS_IS_TRUE', '1')
line = re.sub(r"([^'])'f'(.)", "\1THIS_IS_FALSE\2", line)
line = line.replace('THIS_IS_FALSE', '0')
if searching_for_end:
if re.search(r"integer(?:\s+\w+)*\s*PRIMARY KEY(?:\s+\w+)*\s*,", line):
line = line.replace("PRIMARY KEY", "PRIMARY KEY AUTO_INCREMENT")
line = line.replace('"', '`').replace("'", '`')

if re.match(r".*, ``\);", line):
line = re.sub(r'``\);', r"'');", line)

if searching_for_end and re.match(r'.*\);', line):
searching_for_end = False

if re.match(r"CREATE INDEX", line):
line = re.sub('"', '`', line)

if re.match(r'ANALYZE sqlite_master', line):
line = ''

if re.match(r'INSERT INTO sqlite_stat1', line):
line = ''

if line is not None:
print line,

执行
sqlite3 your.db .mp | python mp_for_mysql.py > mp.sql

之后联接数据库过程中需要设置联接以后编码为utf-8
然后导入mp.sql执行。ok了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
i9502联通卡放置用认准卡位 I9502,SIM1切换SIM网络上网问题 如何批量删除iphone5s通讯录 中联通信飞越JSY2000-FY(832端口)一般规格 中联通信飞越JSY2000-FY重要参数 JSY2000-FY如何设置离位转移? 特权分机如何代普通分机设置叫醒? 中联的JSY2000-FY如何用话机设置免打扰? 垂直分析法分析什么表 零基础学雅思一年多少费用 怎么实现SQLite数据库与MySql数据库相互传递数据,将SQLite里数据传到服 ... 怎样将Sqlserver数据库转成mysql数据库 拼多多砍价为什么我这个号申请的会跑到另一个账号上去? sqlite里的表有数据但无数据类型怎么把sqlite数据库迁移到mysql 如何优雅的将数据从sqlite3迁移到mysql 拼多多砍价自己另一个可以砍吗? 您好.. 我也是想把sqlite数据库转化为mysqll数据库? 请问怎么转化呢... 如何将django中的sqlite3换成mysql 拼多多砍价自己另一个可以砍吗? 日本留学语言学校有年龄限制吗 去日本留学需要先考日语吗? 想去日本留学,什么条件可以办理? 去日本留学对年龄有限制吗? 装修贷可以提前还吗 中鹏网络教育培训怎么样 网络教育和自考哪个好,起程培训中心怎么样? 今年元宵节是多少号? 今年元宵节几号 2021元宵节赏月最佳时间 哪里是最佳观赏地 今年的元宵节在几月几日 哪位朋友可以帮我或者教我把一个sqlite数据库转换为mysql数据库? 怎么添加sqlite数据库到mysql中 如何把redmine的数据从sqlite导入到mysql mysql转为sqlite sqlite数据库怎样转成到sql server中 下面这段sqlite3下的sql,怎样修改可以在mysql下运行啊? 本地应用的SQLite数据库如何与服务器的MySQL同步 怎样让Mysql数据库与android系统中的SQLite数据库进行数据同步? 脸上什么样的痣不能点?长在哪的痣不能点? 脸上什么位置的痣不能点? 怎样投诉韵达快递,谁知道邮管局电话12305怎么是空号? 12305是空号怎么回事 12305怎么是空号 在excel的编辑过程中 在sheet2中 怎样为一个选定表格自动套用彩色2的表格样式 自行套用表格样式“清单表2-着色5 2010excel表格自动套用格式彩色2,找得到自动套用格式,但怎么看哪个是彩色2?光标放在上面时 office2010中Excel自动套用“彩色2“和”三维效果2”格式怎么操作, 《红岩》第一章读后感 红岩 第一章的读后感 红岩第一章节读后感250个字