Django 資料匯入和匯出

2021-08-15 19:32:47 字數 3569 閱讀 5384

本文主要講資料庫的遷移方法,包含不同資料庫,如 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...