sqlite3导出数据库:迁移导出sqlite3数据到mysql流程

假设:
ssh root@xx.xxx.xxx.x
password: xxxxxxxxx
开了 80 81 8080 8088 端口
 

(1)进入数据文件所在目录:cd /data/www/db

将数据文件拷贝到home: cp db.sqlite3 /home
 

(2)将sqlite3数据导出到dump666.sql

sqlite3 db.sqlite3
sqlite> .output /home/dump666.sql
sqlite> .dump
sqlite> .exit
 

(3)pycharm或者命令行下载文件

pycharm download /home/dump666.sql
 

(4)将导出的dump666.sql改造成mysql接受的语法格式

取出所有创建表的地方,将表名的双引号去掉;
将字段设置为`包含,
autoincrement变auto_increment大小写都行;
datetime按照原来存取写入datetime(3)还是datetime(6)
删除:
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE …..
CREATE INDEX ...
CREATE UNIQUE INDEX …
COMMIT;
只剩下insert的内容
改变文件名为dump666modify.sql
 

(5)配置mysql环境

apt-get install mysql-server
apt-get install mysql-client(python使用)
 设置数据库用户名和密码
 

(6)数据库查看版本并且登陆

select versions()  查看版本
mysql -uroot -p
 

(7)创建数据库设置正确编码(数据有汉字):

CREATE DATABASE annosys;
alter database annosys default character set utf8;
show variables like 'character_set_%’;
set  names utf8;
DROP DATABASE annosys;
 
或者下面方式:
create database annosys DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 
use annoys;
set character_set_server = utf8;
set character_set_database = utf8;
/etc/init.d/mysql restart
 

(8)利用命令导入数据库annosys

导入到mysql容易造成时间精度丢失,设置模型表的时间字段,我设置6位:detetime(6)
mysql -uroot -p -f annosys < dump666modify.sql
 
 

(9)以上数据导入成功后,然后重新部署Django 项目 

部署Django之前要杀干净原来部署端口48080和uwsgi,然后重启nginx服务。
lsof -i tcp:48080
kill -9 xxxxxx
ps -ef | grep uwsgi
ps -ef | grep uwsgi | awk '{print $2}' | xargs kill -9
/etc/init.d/nginx restart -c /etc/nginx/conf.d/nginx.conf
 

(10)检查网站数据是否异常,其实在数据导入过程中如果条数一致,没有报错,基本就没有问题

pass

 
 
 
posted @ 2018-12-29 16:54  Adamanter  阅读(3772)  评论(0编辑  收藏  举报