网站空间ip查询,seo怎么优化简述,软件商店下载安装app,百度网站怎么做视频教程咨询【QQ】
sqlite轻量数据还行#xff0c;随着数据量增大#xff0c;不得不迁移进mysql
首先 电脑执行
sqlite3 db.sqlite3 .dump dump.sql
会把整个sqlite的数据导出进 dump.sql中
紧接着我们把sqlite的sql转换成mysql的sql语句#xff0c;因为mysql语句和 sq…咨询【QQ】
sqlite轻量数据还行随着数据量增大不得不迁移进mysql
首先 电脑执行
sqlite3 db.sqlite3 .dump dump.sql
会把整个sqlite的数据导出进 dump.sql中
紧接着我们把sqlite的sql转换成mysql的sql语句因为mysql语句和 sqlite的sql有区别所以我们需要用python实现一个转换脚本
import redef convert_sqlite_to_mysql(sql):# 移除 PRAGMA 语句sql re.sub(rPRAGMA .*?;, , sql)# 修改 BEGIN TRANSACTION 为 START TRANSACTIONsql sql.replace(BEGIN TRANSACTION;, START TRANSACTION;)# 替换 COMMIT TRANSACTION 为 COMMITsql sql.replace(COMMIT;, COMMIT;)# 替换 ROLLBACK TRANSACTION 为 ROLLBACKsql sql.replace(ROLLBACK;, ROLLBACK;)# 修改 AUTOINCREMENT 为 AUTO_INCREMENTsql sql.replace(AUTOINCREMENT, AUTO_INCREMENT)# 替换数据类型sql sql.replace(INTEGER, INT)sql sql.replace(TEXT, VARCHAR(255))# 替换双引号为反引号sql sql.replace(, )# 添加 CHARACTER SET utf8mb4 到表定义中sql re.sub(rCREATE TABLE (.*?) \(, rCREATE TABLE IF NOT EXISTS \1 (, sql)# sql re.sub(r\);, r) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;, sql)# 处理 INSERT 语句确保数据字符集正确sql re.sub(rINSERT INTO (.*?) \((.*?)\) VALUES, rINSERT INTO \1 (\2) VALUES, sql)sql re.sub(rINSERT INTO sqlite_sequence.*?;, , sql)return sql# 读取原始的 SQLite dump 文件
with open(dump.sql, r, encodingutf-8) as file:sql_dump file.read()# 转换为 MySQL 兼容的 SQL
mysql_compatible_sql convert_sqlite_to_mysql(sql_dump)# 将转换后的 SQL 写入新的文件
with open(dump_mysql.sql, w, encodingutf-8) as file:file.write(mysql_compatible_sql)print(SQL conversion complete. Please check dump_mysql.sql for MySQL import.)执行py脚本生成dump_mysql.sql
这样就转换好了紧接着进入mysql创建数据库 mydatabase
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE mydatabase;去mysql安装目录执行。linux直接执行此命令就行
mysql -u root -p mydatabase dump_mysql.sql#如果遇到中文报错\u等报错数据导入的时候就需要用一下命令,指定字符集导入进mysqlmysql --default-character-setutf8mb4 -u root -p mydatabase dump_mysql.sql
然后输入mysql对应的密码就行了
等待数据转存完就行了。可能会报一个 sqlite_sequence 之类的异常并不影响数据。至此就行了