一,简单的数据导出与导入(简单的迁移)

1. django 项目提供了一个导出的方法 python manage.py dumpdata, 不指定 appname 时默认为导出所有的app

1
python manage.py dumpdata [appname] > appname_data.json

比如我们有一个项目叫 mysite, 里面有一个 app 叫 blog ,我们想导出 blog 的所有数据

1
python manage.py dumpdata blog > blog_dump.json

2. 数据导入,不需要指定 appname

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会导致出现一些问题

用上面的方法只迁移一个app应该问题不大,但是如果有用户,用户组挂钩,事情往往变得糟糕!如果导入后没有对数据进行修改,你可以考虑重新导入,可能还要快一些,如果是手动在后台输入或者修改过,这种方法就不适用了

 

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下才能运行。文件存储在数据库相关的项目所在位置中。

总结:其它的数据库,请自行搜索如何导入导出,整个数据库导出的好处就是对数据之间的关系处理比较省事,比如自强学堂里面的很多教程,上一篇和下一篇是一个一对一的关系,这样的话用 python manage.py dumpdata 无法导出教程与教程的关系,但是数据库整个导出就没有任何问题,当然也可以写一个脚本去导出关系再导入。Django 自带的 python manage.py dumpdata 和 python manage.py loaddata 最大的好处就是可以跨数据库进行导入导出。

转载于:https://www.cnblogs.com/xyyhcn/p/10775158.html

Django 数据导入和导出相关推荐

  1. java导出csv文件_R语言数据导入与导出

    R语言数据导入与导出 整这么一个系列,还是因为学R语言时遇到过一个非常"小白友好"的网站"DataScience Made Simple".相信很多人搜到过这个 ...

  2. csv导入pgsql不成功_数据科学 | pandas数据导入与导出

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』原创 作者:杨士锦 周岩 书生 编者按 当我们开始着手做一个数据分析项目时,选择和导入数据集是第一个步骤,而导出数据虽然非必需,但有时候我们也需要保 ...

  3. GEE系列:第4单元 Google 地球引擎中的数据导入和导出

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  4. memcached命令行memcached数据导入和导出PHP链接memcached memcach

    memcached命令行 memcached数据导入和导出 PHP链接memcached 先安装php的memcache扩展 cd /usr/local/src/ wget  http://www.a ...

  5. 金算盘导出oracle,金算盘软件数据导入和导出操作方法.doc

    金算盘软件数据导入和导出操作方法 金算盘软件维护集锦 此为201003版本,本期讲一下"导入导出"的一些注意事项,以"往来期初"导入导出为例. 导入导出这个功能 ...

  6. oracle数据的导入和导出,Oracle入门教学--数据导入和导出

    数据导入和导出 一.数据导入工具 1.利用PLSQL直接进行数据表的粘贴 (1)下载测试表 (2)打开准备导入的文件并进行创建数据库表的SQL语句编辑 A.复制表头到新的sheet B.选择粘贴 C. ...

  7. mariadb转mysql_MariaDB/MySQL备份和恢复(二):数据导入、导出

    1.导出.导入数据 load data infile和select into outfile语句是配套的.select into outfile语句是将检索出来的数据按格式导出到文件中,数据迁移跨数据 ...

  8. mysql数据导入、导出

    数据导入:把系统文件内容存储到数据库服务器的表里. 对于系统文件内容有一定要求:要有格式规律 数据导出 :把服务器表里的记录存储到系统文件里,这叫数据导出. 导出.导入数据 文件存储路径 默认是:/v ...

  9. Python全栈 MySQL 数据库 (索引、数据导入、导出)

    ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 表字段重命名(change) alter table 表名 change 原名 新名 数据类型: S ...

最新文章

  1. vba如何让文本框显示指定的内容_室内LED显示屏如何安装?一篇内容了解清楚
  2. tcga数据下载_好东西丨零基础入门TCGA
  3. CentOS 命令大全 (转)
  4. 一个微软面试题--关于位结构体
  5. 退化函数及多种复原方法【Matlab】
  6. 你可能不知道的Spring Boot那点事
  7. 让其他CMS黯然失色的we7CMS
  8. 机器学习实战(MachineLearinginAction) 第一章
  9. 段选择符和段描述符的关系
  10. ARM 架构演进对未来计算意味着什么?
  11. 惠普服务器ssa找不到控制卡,DL380 Gen10服务器Vmware ESXi 6.0 系统SSACLI工具
  12. C#之Unix时间和北京时间互转
  13. 软件测试——测试分类及测试工具的简介
  14. v2021年烷基化工艺考试题及烷基化工艺考试试卷
  15. 互联网晚报 | 6月28日 星期二|​ QQ回应大规模账号被盗;iPhone 14系列新机最快8月初量产;微信表情符号写入判决...
  16. 使用ZED相机录制事件双目数据集
  17. android分析审计工具,Android审计平台
  18. slick.js基于jQuery全屏轮播插件
  19. 豆瓣首页话题输入框的实现
  20. SQL Compare数据库比较工具 完全破解+使用教程

热门文章

  1. sum和total的区别
  2. Linux 命令之 rpmbuild -- 用于创建 rpm 格式的二进制软件包和源码软件包
  3. word域变成正常文本_【Word小技巧】不学会后悔哦~
  4. 【WebRTC---入门篇】(五)Web服务器原理与Nodejs搭建
  5. 微课与计算机技术的论文,微课在高校计算机教学的运用论文
  6. 自定义日历控android,Android自定义日历Calender代码实现
  7. js text 和 html,JS DOM innerText和textContent的区别
  8. java gnu_GNU/Linux下Java开发环境的安装和配置 | 学步园
  9. python多个变量的for循环
  10. 什么是光纤转换器?光纤转换器转换类别介绍