本文主要講資料庫的遷移方法,包含不同資料庫,如 sqlite3, mysql, postgresql 之間資料遷移方案,以及資料在不同機器上遷移方案
1
1
python manage.py dumpdata blog > blog_dump.json
1
python manage.py loaddata blog_dump.json
備註:一些常用的
1
python manage.py dumpdata auth > auth.json
# 匯出使用者資料
優點:可以相容各種支援的資料庫,也就是說,以前用的是 sqlite3,可以匯出後,用這種方法匯入到 mysql, postgresql等資料庫,反過來也可以。
缺點:資料量大的時候,速度相對較慢,表的關係比較複雜的時候可以匯入不成功。
2.1. 用 django 自帶的命令
比如早期我們為了開發方便,用的sqlite3資料庫,後來發現**資料太多,sqlite3效能有點跟不上了,想換成postgresql,或者 mysql的時候。
如果還我還使用上面的命令,如果你運氣好的話,也許會匯入成功,流程如下:
2.1.1. 從原來的整個資料庫匯出所有資料
1
python manage.py dumpdata > mysite_all_data.json
2.1.2. 將mysite_all_data.json傳送到另乙個伺服器或電腦上匯入
1
python manage.py loaddata mysite_all_data.json
如果你運氣好的話可能會匯入完成,但是往往不那麼順利,原因如下:
a) 我們在寫models的時候如果用到charfield,就一定要寫max_length,在sqlite3中是不檢查這個最大長度的,你寫最大允許長度為100,你往資料庫放10000個,sqlite3都不報錯,而且不截斷資料的長度,這似乎是slite3的優點,但是也給從sqlite3匯入其它資料庫帶來了困難,因為mysql和postgresql資料庫都會檢查最大長度,超出時就報錯!
b) django 自帶的contenttype會導致出現一些問題
2.2, 用資料庫自帶的匯出匯入命令
預備知識:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
先輸入 mysql (比如 mysql -u root -p) 進入資料庫 shell
建立 gbk 格式的資料庫 zqxt
create database `zqxt` default character set gbk collate gbk_chinese_ci;
建立 utf8 格式的資料庫 zqxt
create database `zqxt` default character set utf8 collate utf8_general_ci;
賦予資料庫(zqxt)許可權給某使用者,可以是已經存在的使用者或新使用者名稱
grant all privileges on zqxt.* to
"任意使用者名稱"
@
"localhost"
identified by
"新密碼"
;
重新整理許可權
flush privileges;
退出資料庫shell
exit;
假定 django 用的資料庫名稱為 zqxt
2.2.1 在postgresql中:
1
2
3
4
5
6
7
# 匯出資料庫 zqxt 到 zqxt.sql 檔案中
pg_dump zqxt > zqxt.sql
# 匯入資料庫到 新的伺服器
psql zqxt -f zqxt.sql
#注意:資料匯入匯出可能需要資料庫超級許可權,用 sudo su postgres 切換到資料庫超級使用者 postgres
2.2.2 在mysql 中:
使用網頁工具,比如phpmyadmin 匯入匯出很簡單,這裡就不說了,主要說一下命令列如何操作:
1
2
3
4
5
6
7
8
# 匯出資料庫 zqxt 到 zqxt.sql 檔案中
mysqldump -u username -p zqxt > zqxt.sql
# 匯入資料庫到 新的伺服器 (假設資料庫已經建立好)
cat
/path/to/zqxt
.sql | mysql -u username -p zqxt
或 mysql -u username -p zqxt <
/path/to/zqxt
.sql
或 mysql -u username -p zqxt 進入 mysql shell 後,執行
source
/path/to/zqxt
.sql
# 輸入密碼開始匯入資料
注意:在cmd中執行匯出命令時會出現錯誤:'mysqldump' 不是內部或外部命令,也不是可執行的程式或批處理檔案。
解決辦法:進入mysql的安裝目錄下,譬如我把mysql裝在了c盤,就到c:\mysql\bin下才能執行。檔案儲存在資料庫相關的專案所在位置中。
Django 資料匯入和匯出
本文主要講資料庫的遷移方法,包含不同資料庫,如 sqlite3,mysql,postgresql 之間資料遷移方案,以及資料在不同機器上遷移方案。簡單的資料匯出與匯入 簡單的遷移 python3 manage.py dumpdata blog blog dump.jsonpython3 manage...
django 資料匯入匯出
這是大概一年前面試的時候一位面試官問我的問題,後來就一直想要整理一下筆記 寫在最前面的小備忘,在django中單獨執行某個python檔案,需要新增如下 import os os.environ.setdefault django settings module mysite.settings im...
資料匯出和匯入
以winfrom為例 控制台也可以 1 由記事本匯入資料庫中 1 使用流檔案與記事本建立聯絡 filestream filestream file.open h studentinfo.txt filemode.openorcreate,fileaccess.read streamreader re...