Docs/数据库/mongodb/mongodb-数据库操作-备份-还原-导出-导入.md

119 lines
No EOL
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

mongodb 数据库操作--备份 还原 导出 导入
## 一、mongodump备份数据库
```bash
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
```
如果没有用户谁,可以去掉-u和-p。
如果导出本机的数据库,可以去掉-h。
如果是默认端口,可以去掉--port。
如果想导出所有数据库,可以去掉-d。
## 导出所有数据库
```bash
mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/
```
显示如下
```
connected to: 127.0.0.1
Tue Dec 3 06:15:55.448 all dbs
Tue Dec 3 06:15:55.449 DATABASE: test to /home/zhangy/mongodb/test
Tue Dec 3 06:15:55.449 test.system.indexes to /home/zhangy/mongodb/test/system.indexes.bson
Tue Dec 3 06:15:55.450 1 objects
Tue Dec 3 06:15:55.450 test.posts to /home/zhangy/mongodb/test/posts.bson
Tue Dec 3 06:15:55.480 0 objects
...
```
## 导出指定数据库
```bash
mongodump -h 192.168.1.108 -d tank -o /home/zhangy/mongodb/
```
显示如下
```
connected to: 192.168.1.108
Tue Dec 3 06:11:41.618 DATABASE: tank to /home/zhangy/mongodb/tank
Tue Dec 3 06:11:41.623 tank.system.indexes to /home/zhangy/mongodb/tank/system.indexes.bson
Tue Dec 3 06:11:41.623 2 objects
Tue Dec 3 06:11:41.623 tank.contact to /home/zhangy/mongodb/tank/contact.bson
Tue Dec 3 06:11:41.669 2 objects
Tue Dec 3 06:11:41.670 Metadata for tank.contact to /home/zhangy/mongodb/tank/contact.metadata.json
Tue Dec 3 06:11:41.670 tank.users to /home/zhangy/mongodb/tank/users.bson
Tue Dec 3 06:11:41.685 2 objects
Tue Dec 3 06:11:41.685 Metadata for tank.users to /home/zhangy/mongodb/tank/users.metadata.json
```
# 三、mongorestore还原数据库
```bash
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
```
--drop的意思是先删除所有的记录然后恢复。
## 恢复所有数据库到mongodb中
```bash
mongorestore /home/zhangy/mongodb/ #这里的路径是所有库的备份路径
```
## 还原指定的数据库
```bash
mongorestore -d tank /home/zhangy/mongodb/tank/ #tank这个数据库的备份路径
```
```bash
mongorestore -d tank_new /home/zhangy/mongodb/tank/ #将tank还原tank_new数据库中
```
这二个命令可以实现数据库的备份与还原文件格式是json和bson的。无法指写到表备份或者还原。
# 四、mongoexport导出表或者表中部分字段
```bash
mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名
```
上面的参数好理解,重点说一下:
-f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
-q 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据
--csv 表示导出的文件格式为csv的这个比较有用因为大部分的关系型数据库都是支持csv在这里有共同点
## 导出整张表
```bash
mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat
```
## 导出表中部分字段
```bash
mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv
```
## 根据条件导出数据
```bash
mongoexport -d tank -c users -q '{uid:{$gt:1}}' -o tank/users.json
```
# 五、mongoimport导入表或者表中部分字段
## 1.1,还原整表导出的非csv文件
```bash
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名
```
重点说一下--upsert其他参数上面的命令已有提到--upsert 插入或者更新现有数据
## 1.2,还原部分字段的导出文件
```
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名
```
--upsertFields跟--upsert一样
## 1.3,还原导出的csv文件
```bash
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名
```
上面三种情况,还可以有其他排列组合的。
## 还原导出的表数据
```bash
mongoimport -d tank -c users --upsert tank/users.dat
```
## 部分字段的表数据导入
```bash
mongoimport -d tank -c users --upsertFields uid,name,sex tank/users.dat
```
## 还原csv文件
```bash
mongoimport -d tank -c users --type csv --headerline --file tank/users.csv
```
总体感觉mongodb的备份与还原还是挺强大的虽然有点麻烦。