将sqlite3中数据导入到mysql中的实战教程
程序员文章站
2022-03-21 10:20:36
前言
sqlite3只小巧轻便,但是并不支持并发访问,当网站并发量较大时候,数据库请求队列边长,有可能导致队列末尾去数据库操作超时,从而操作失败。因此需要切换到支持并发访...
前言
sqlite3只小巧轻便,但是并不支持并发访问,当网站并发量较大时候,数据库请求队列边长,有可能导致队列末尾去数据库操作超时,从而操作失败。因此需要切换到支持并发访问的数据库。切换数据库需要将老的数据导出,再导入到新的数据库中,但是sqlite3和mysql的数据库并不完全兼容,需要做部分调整才能正常导入到mysql中。我最近工作中就遇到了这个问题。
最近一个项目中使用magenetico抓取磁力链接,由于它使用的是sqlite3, 文件会越来越大,而且不支持分布式;所以需要将其改造成mysql,在迁移之前需要将已经抓取的15g数据导入到mysql,下面来一起看看详细的介绍吧
方法如下:
从sqlite3文件dump出sql
sqlite3 database.sqlite3 sqlite3> .output /path/to/dump.sql sqlite3> .dump sqlite3> .exit
切分文件
文件比较大的时候,很有导入到一半的时候失败,这个时候需要从失败的行开始切分出一个新的sql文件来
awk '{if (nr>=6240863) print $0>"dump_part.sql"}' dump.sql
mysql参数修改
[mysqld] max_allowed_packet = 100m
sql兼容, 符号替换
# 1. 删除不包含 insert into 的行 # 2. 替换表名 wrap # 3. 替换 hex sed '/insert into/!d;s/"table1"/`table1`/;s/"table2"/`table2`/;s/,x/,/' dump.sql
导入到mysql
# 加上 force 参数, 防止部分有问题的sql阻止导入 mysql -uroot -p -f magnet < dump.sql
引用
how to use the sqlite dump command
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: 国服《英雄联盟手游》超燃测试放号开启:仅限安卓用户
下一篇: java基础之方法详解
推荐阅读
-
如何把ACCESS的数据导入到Mysql中
-
Mysql将一个表中的某一列数据复制到另一个表中某一列里的方法
-
数据库:MySQL实战;左链接;查询WordPress数据库中的文章内容
-
php下将图片以二进制存入mysql数据库中并显示的实现代码
-
数据库SQL实战:获取所有部门中当前员工薪水最高的相关信息(教程)
-
python中连接三大主流数据库mysql,mongodb和redis的操作教程
-
如何把ACCESS的数据导入到Mysql中
-
简单的jdbc连接,将mysql中表的数据在eclipse中打印出来
-
如何将外部数据库 导入到系统的SQL中
-
mysql 将一个表中的数据复制到另一个表中,sql语句