吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 790|回复: 23
上一主题 下一主题
收起左侧

[其他原创] SQLite和MySQL互转工具

[复制链接]
跳转到指定楼层
楼主
clemmenson 发表于 2025-3-21 09:55 回帖奖励
本帖最后由 clemmenson 于 2025-3-21 09:57 编辑

之前处理老PHP项目时候写了一个SQLite和MySQL互转工具,支持简单的语句转换,具体功能:

1. 语法转换
通过一系列正则表达式,移除或替换MySQL特有的语法,使其兼容SQLite:
​移除反引号:
str_replace('', '', $createTableSql)`
MySQL使用反引号包裹表名和字段名,SQLite不支持,直接移除。
​移除AUTO_INCREMENT:
preg_replace('/\bAUTO_INCREMENT\b/i', '', $createTableSql)
SQLite不支持AUTO_INCREMENT,直接移除。
int替换为INTEGER:
preg_replace('/\bint$\d+$\b/i', 'INTEGER', $createTableSql)
varchar替换为TEXT:
preg_replace('/\bvarchar$\d+$\b/i', 'TEXT', $createTableSql)
text和timestamp替换为TEXT:
preg_replace('/\btext\b/i', 'TEXT', $createTableSql)
preg_replace('/\btimestamp\b/i', 'TEXT', $createTableSql)
ENUM替换为TEXT:
preg_replace('/\bENUM$[^)]+$/i', 'TEXT', $createTableSql)
SQLite支持的数据类型较少,需将MySQL的复杂类型转换为SQLite支持的类型。
​移除MySQL特有属性:
DEFAULT CURRENT_TIMESTAMP:
preg_replace('/\bDEFAULT CURRENT_TIMESTAMP\b/i', '', $createTableSql)
ENGINE、DEFAULT CHARSET、COLLATE:
preg_replace('/\bENGINE=\w+\s*/i', '', $createTableSql)
preg_replace('/\bDEFAULT CHARSET=\w+\s*/i', '', $createTableSql)
preg_replace('/\bCOLLATE=\w+\s*/i', '', $createTableSql)
移除单独的PRIMARY KEY定义:
preg_replace('/,\s*PRIMARY KEY\s*$[^)]+$/i', '', $createTableSql)
移除KEY定义:
preg_replace('/,\s*KEY\s+\w+\s*$[^)]+$/i', '', $createTableSql)
移除外键约束:
preg_replace('/,\s*CONSTRAINT\s+\w+\s+FOREIGN KEY\s*$[^)]+$\s+REFERENCES\s+\w+\s*$[^)]+$/i', '', $createTableSql)
​2. 主键处理
如果字段是主键且是整数类型,则添加AUTOINCREMENT属性:
​匹配主键字段:
preg_match('/PRIMARY KEY\s*$([^)]+)$/i', $createTableSql, $matches)
​添加AUTOINCREMENT:
preg_replace('/\b' . $primaryKey . '\s+INTEGER/i', $primaryKey . ' INTEGER PRIMARY KEY AUTOINCREMENT', $createTableSql)


使用方法:直接上传到服务器,访问index.php,输入相关信息开始转换。
sqlite_to_mysql.zip (42.91 KB, 下载次数: 94)

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
suysung + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
DRZH + 1 + 1 我很赞同!
abpyu + 2 + 1 谢谢@Thanks!
ihlipo + 1 + 1 非常感谢
wuloveyou + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
cmssky 发表于 2025-3-21 12:36
收藏备用
3#
ihlipo 发表于 2025-3-21 13:23
4#
whereismy 发表于 2025-3-21 13:42
5#
jun269 发表于 2025-3-21 14:11
楼主的意思只能转换简单的语句?
6#
宜城小站 发表于 2025-3-21 14:27
这款数据库软件难得
7#
abpyu 发表于 2025-3-21 14:36
这个好,我网站现在用的SQLite,目前大小才2.8mb左右
虽然还早,这个先收藏
谢谢大佬分享
8#
changzhenyue 发表于 2025-3-21 14:37
非常感谢,正好需要
9#
Yifeiw0420 发表于 2025-3-21 14:44
这个得收藏一下
10#
nj19 发表于 2025-3-21 14:51
谢谢分享。。收藏了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-1 19:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表