如何优雅的将数据从sqlite3迁移到mysql

【教程】Sqlite迁移到mysql(django) db.sqlite3 是 sqlite 数据库文件output.sql是导出sql文件的名称。 阅读详情

网上找了很多资料。发现都是有问题的。

比较接近要求有的。http://stackoverflow.com/questions/18671/quick-easy-way-to-migrate-sqlite3-to-mysql

在他基础上进行改造。


python代码

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 .dump | python dump_for_mysql.py > dump.sql

之后联接数据库过程中需要设置联接以后编码为utf-8

然后导入dump.sql执行。ok了。


其中可能会出现错误

varchar(64,0)

手工修改为varchar(64)

=_=

一键迁移:如何轻松将SQLite数据转移到MySQL copy_table_to_mysql函数是代码的核心,它接受六个参数,分别是SQLite数据库的路径、表名、MySQL服务器的IP地址、MySQL的用户名、密码和数据库名称。这些参数为数据迁移提供了必要的信息。 阅读详情

相关推荐

Django数据库迁移指南:从MySQL到SQLite的优雅转身

选择深夜维护窗口:避免数据变动导致的不一致先备份再操作:至少保留三个历史版本备份版本控制迁移文件:将.json文件纳入git管理灰度发布验证:先迁移测试环境,观察1周再切生产📌 真理时刻:迁移完成后,立即运行进行生产环境安全检查!通过这套优雅的迁移方案,您可以在30分钟内完成数据库引擎的无缝切换,就像给Django项目换上一双更适合跑路的跑鞋!🚀。

苏呆仔知识馆 896

SQLite3-to-MySQL 安装与配置指南

SQLite3-to-MySQL 安装与配置指南 1. 项目基础介绍 SQLite3-to-MySQL 是一个简单的 Python 工具,用于将数据从 SQLite 3 数据库转移到 MySQL 数据库。它提供了一个命令行界面,允许用户指定源数据库文件、目标数据库参数以及迁移过程中的一些选项。 2. 主要编程语言 该项目主要使用 Python 编程语言。 3. 关键技术和框架 Python:作为...

gitblog_00931的博客 1292

SQLite3数据迁移至MySQL:教程与实践

本文还有配套的精品资源,点击获取 简介:SQLite3-to-mysql是一个工具或脚本,用于将SQLite3数据库中的数据迁移到MySQL中。这种迁移过程通常需要处理数据格式和SQL语法的差异,确保SQLite3的数据能够被MySQL正确解析和导入。这包括数据类型转换、SQL语法调整、数据预处理、索引和外键管理以及权限和用户管理。本教程提供了对这些关键迁移步骤的理解,并强...

weixin_36213081的博客 2931

sqlite3 转mysql_如何优雅的将数据从sqlite3迁移到mysql

网上找了很多资料。发现都是有问题的。在他基础上进行改造。python代码import reimport fileinputdef this_line_is_useless(line):useless_es = ['BEGIN TRANSACTION','COMMIT','sqlite_sequence','CREATE UNIQUE INDEX',]for useless in useless_e...

weixin_29371981的博客 567

sqlite3-to-mysql:将数据从SQLite传输到MySQL

SQLite3到MySQL 一个简单的Python工具,可将数据从SQLite 3传输到MySQL。 我最初将此简单程序编写为独立脚本,然后将其作为,以解决此。 从那时起,由于它是如此简单且有效,因此许多人对此产生了兴趣。 因此,我终于搬走了懒骨头,制作了一个GitHub存储库 :octopus: 。 怎么跑 pip install sqlite3-to-mysql sqlite3mysql --help 用法 Usage: sqlite3mysql [OPTIONS] Transfer SQLite to MySQL using the provided CLI options. Options: -f, --sqlite-file PATH SQLite3 database file [required] -t, --sqlite-tables TEXT Transfer only these specific tables (space separated table names). Im

mysql-to-sqlite3:将数据从MySQL传输到SQLite

MySQL到SQLite3 一个简单的Python工具,可将数据从MySQL传输到SQLite 3。 这是我的早该应得的免费工具。 它将所有数据从MySQL数据库传输到SQLite3数据库。 怎么跑 pip install mysql-to-sqlite3 mysql2sqlite --help 用法 Usage: mysql2sqlite [OPTIONS] Transfer MySQL to SQLite using the provided CLI options. Options: -f, --sqlite-file PATH SQLite3 database file [required] -d, --mysql-database TEXT MySQL database name [required] -u, --mysql-user TEXT MySQL user [required] -p, --mysql-password TEXT MySQL password -t, --mysql-tables TEXT

sqlite 迁移到 mysql_如何优雅的将数据从sqlite3迁移到mysql

网上找了很多资料。发现都是有问题的。在他基础上进行改造。python代码import reimport fileinputdef this_line_is_useless(line):useless_es = ['BEGIN TRANSACTION','COMMIT','sqlite_sequence','CREATE UNIQUE INDEX',]for useless in useless_e...

weixin_32401075的博客 170

T-Box功能详解及应用

T - BOX,其全称为 Telematics Box,作为远程 / 车载通信模块,是一款集车身网络与无线通讯功能于一体的智能终端设备。它充当了多媒体车机与 TSP(汽车远程服务提供商)以及互联网之间的无线路由器角色,为用户创造了远程访问的可能。用户借助T - BOX能够对车辆配备的各个 ECU(电子控制单元)进行远程操控,包括远程启动或停止发动机开启或关闭空调天窗后备箱门车门,以及实现闪灯鸣笛等功能。

wgl110110的博客 5640

better-sqlite3 深度教程:为什么它比 node‑sqlite3 更好、怎么用、什么时候不该用

你可以直接用下面这套逻辑判断:你在 Node.js 用 SQLite✔ 用✔ 抛弃你觉得慢→ 先查:慢查询、缺索引、没开 WAL→ 不是库的问题你真的需要超高并发写 / TB 级库 / 大量大结果返回→ 不要纠结 SQLite 驱动→ 直接换PostgreSQL 等专业数据库除了必须上重型数据库的场景,better-sqlite3 就是 Node.js + SQLite 的最优解。

2003

从数学到机床:RTCP背后的几何变换与工业实现

本文深入解析RTCP(Rotary Tool Center Point)技术在五轴数控加工中的核心作用,通过几何变换与运动学原理实现刀尖点跟随,确保加工精度。从数学基础到工业实现,详细探讨了算法架构、机床结构适配及精度保障方法,为数控系统开发和高效加工提供关键技术支撑。

jump7的博客 258

BAPI_REPMANCONF1_CREATE_MTS实战:从MFBF事务码到精准零件反冲的代码级解析

本文深入解析了如何通过BAPI_REPMANCONF1_CREATE_MTS函数实现SAP生产模块中的零件反冲自动化。文章对比了MFBF事务码的手动操作与BAPI编程的优劣,详细拆解了函数的核心参数、数据结构、调用流程及事务控制,并提供了从数据准备到凭证获取的完整代码示例与避坑指南,帮助开发者实现高效、精准的批量投料过账。

weixin_29240343的博客 189

SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具

SQLAlchemy 是 Python 生态系统中最流行的 ORM。SQLAlchemy 设计非常优雅,分为了两部分——底层的 Core 和上层的传统ORM。在 Python 乃至其他语言的大多数 ORM 中,都没有实现很好的分层设计,比如 django 的 ORM,数据库链接和 ORM 本身完全混在一起。SQLAlchemy 是 Python 中一个通过 ORM 操作数据库的框架。 SOLAIchemy对象关系映射器提供了一种方法,用于将用户定义的Python类与数据库表相关联,并将这些类(对象)的实例与

python全栈 1864

Stata做DID平行趋势检验,用coefplot画图时遇到的3个坑及解决办法

本文详细解析了使用Stata进行DID平行趋势检验时,利用coefplot绘图可能遇到的三个常见问题及其解决方案。包括基线期选择陷阱、置信区间变形和图形元素错位,提供专业调试步骤和高阶技巧,帮助研究者高效完成学术级图表绘制。

weixin_42530458的博客 324

告别数据迁移烦恼:wewe-rss无缝切换指南

wewe-rss是一款更优雅的微信公众号订阅工具,支持微信公众号订阅、历史文章获取、自动定时更新和多种格式的RSS生成。本文将详细介绍如何在不同数据库之间无缝切换,让你轻松管理数据,告别迁移烦恼。 ## 🌟 为什么需要数据库切换 在使用wewe-rss的过程中,你可能会因为各种原因需要切换数据库。比如从开发环境的SQLite迁移到生产环境的MySQL,或者出于性能考虑想要更换数据库类型。we

gitblog_00369的博客 988

E28 LoRa模块透传 定点传输 RSSI测试与MicroPython应用

测试说明 测试模块数:3 测试模式:配置模式和传输模式 如果没有检测到串口,首先检查是否安装串口驱动CH341SER,下载链接,提取码:vaw2 工作模式 模式(0-3) M2 M1 M0 模式介绍 备注 0 传输模式 1 0 0 串口打开,无线打开,连续透明传输 空速支持手动配置和自适应波特率自动调节;连续模式双方波特率必须一致 1 RSSI 1 0 1 串口打开,无线打开,RSSI功能打开 模块每100ms输出RSSI强度值 2 测距模式 1 1 0 保留 - 3 配置模式

GniLAY1022的博客 4242

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1498

探索 Electron 应用的本地存储:SQLite3 与 Knex.js 的协同工作

`Knex` 是一个用 `JavaScript` 编写的 `SQL` 构建器,它提供了一种优雅的方式来构建和执行 `SQL` 语句。

我码玄黄的博客 1556

【WRF理论第十九期】内陆湖泊、水体的处理方式

【WRF理论第十九期】内陆湖泊、水体的处理方式

WW、forever的博客 358

SQLite 详解:轻量级数据库的优雅之道(文末有彩蛋)

SQLite 是一个轻量级、嵌入式的关系型数据库引擎。与传统数据库不同,它不是一个独立的服务,而是作为一个库(library)被直接嵌入到应用程序中。数据存储在一个单一的磁盘文件中(通常是.db或.sqlite文件)。遵循 SQL 标准,支持事务、索引、触发器等核心功能。开源、跨平台,几乎可以在任何操作系统上运行。SQLite 的魅力在于它的简洁、可靠和普适性。如果你需要一个轻量、零配置的数据库解决方案,SQLite 是首选。

记录学习编程的日常 1216

【Claude】媒体文件处理错误:PDF 与 Image 过大的检测与预处理方法 bug报错已解决

图片压缩是必须的:原始图片的 base64 会占用大量 TokenPDF 提取文本优于传图片:文本版 PDF 比扫描版更省 Token分块处理大文件:不要一次性处理整个大文件控制分辨率:800x800 通常足够 Claude 分析。

博客 6359

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Flask数据库实战:SQLAlchemy连接MySQL与SQLite的完整指南

在Web开发中,数据库是应用的核心基础设施,而ORM(对象关系映射)则充当了业务逻辑与数据存储之间的桥梁。SQLAlchemy作为Python生态中最强大的ORM框架之一,与Flask微框架结合后,能够大幅简化数据库操作流程。理解连接池的原理与配置,是保障高并发场景下数据库稳定性的关键。无论是轻量级的SQLite还是企业级的MySQL,通过Flask-SQLAlchemy都能实现高效的增删改查、事务管理与表结构迁移。从模型定义到数据库迁移,从连接池优化到性能调优,本文覆盖了Flask数据库开发中的常见问题与

weixin_30745553的博客 249

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

程序员自媒体从 0 到 200 万粉的涨粉运营复盘:鱼皮 9 年经历与 7 条实战经验

> 本文基于开源仓库 ai-guide(鱼皮的 AI 知识库)中《Vibe Coding 零基础教程 · 50 产品变现》板块的实战分享文档整理而成。该文完整记录了作者鱼皮从大学自学编程、进入腾讯、离职创业,再到把个人自媒体做到全网 200 万粉、公司产品月活过百万的真实路径,并沉淀出 7 条关于自媒体冷启动、内容创作、团队管理与创业心态的可复用方法论。读完本文,你将掌握一套经实战验证的「涨粉 →

gitblog_00326的博客 256

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

DBMate数据库迁移工具:快速上手指南与核心功能详解

DBMate是一个轻量级、框架无关的数据库迁移工具,能够帮助开发者轻松管理多种数据库的schema变更。无论你使用Go、Node.js、Python、Ruby还是其他语言开发应用,DBMate都能提供一致的数据库迁移体验。🚀 ## 为什么选择DBMate? 在当今多语言、微服务架构盛行的时代,DBMate的框架无关性使其成为理想选择。它支持MySQL、PostgreSQL、SQLite、Cl

gitblog_01150的博客 1087

ios mysql实例_IOS 数据库升级数据迁移的实例详解

IOS 数据库升级数据迁移的实例详解概要:很久以前就遇到过数据库版本升级的引用场景,当时的做法是简单的删除旧的数据库文件,重建数据库和表结构,这种暴力升级的方式会导致旧的数据的丢失,现在看来这并不不是一个优雅的解决方案,现在一个新的项目中又使用到了数据库,我不得不重新考虑这个问题,我希望用一种比较优雅的方式去解决这个问题,以后我们还会遇到类似的场景,我们都想做的更好不是吗?理想的情况是:数据库升级...

weixin_29056101的博客 188

Python数据库操作实战:从SQLite到MySQL的完整指南

数据库是现代应用开发中数据持久化的核心技术,它通过结构化存储和高效检索机制管理海量数据。其工作原理基于客户端-服务器架构或嵌入式引擎,通过SQL语言实现数据定义和操作。掌握数据库技术对构建可扩展应用具有关键价值,无论是Web后端、数据分析还是自动化工具都依赖其实现数据层。在实际工程实践中,Python程序员需要理解连接管理、事务控制和查询优化等核心概念。通过原生SQL配合数据库驱动(如sqlite3和mysql-connector-python),开发者能获得对数据库的精细控制,同时必须重视SQL注入防护和

weixin_33754065的博客 345

Luminus-template 数据库迁移指南:用 luminus-migrations 优雅管理 SQL 版本

Luminus-template 是 Clojure 社区最流行的 Web 项目脚手架,它通过一条命令即可生成带数据库、认证、前端等完整能力的应用骨架。对于新手开发者来说,最大的困惑往往不是怎么写业务代码,而是**数据库结构如何随代码一起演进**。本文将以 Luminus-template 内置的 luminus-migrations 为例,手把手教你用 up/down 迁移文件管理 SQL 版本

gitblog_00981的博客 377
上一篇: mysql 设置远程连接
下一篇: django第三方类库 - django-south 项目开始中就使用south方法
watsy
博客等级 码龄19年 133粉丝 104原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值