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

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM