mongodb 备份、还原、导入、导出

时间:2021-12-11 14:12:12

mongodump备份数据库

常用的备份命令格式

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径

如果想导出所有数据库,可以去掉-d

-h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

--port:

端口号。

-d:
需要备份的数据库实例,例如:test

-o:
备份的数据存放位置,例如:/data/backup,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test(test是备份的数据库名)目录,这个目录里面存放该数据库实例的备份数据。

导出某个数据库实例
mongodump -h 192.168.144.25 --port 33988 -d liangdb -o /data/backup/

mongorestore还原数据库

常用命令格式

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

--host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017

--db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

--drop:
如果某个集合在目标库中存在,不加此参数则不会覆盖,加此参数先删除所有的记录,然后恢复。恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除!此参数要慎用。

<path>:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。

你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。
--dir:
指定备份的目录
不能同时指定 <path> 和 --dir 选项。

导入某个库实例

mongorestore -h192.168.114.25 --port 33988 -d liangdb /data/backup/liangdb

mongoexport导出表,或者表中部分字段

常用命令格式

mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 集合名 -f 字段

-q 条件导出 --csv -o 文件名 上面的参数好理解,重点说一下:
    -f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
    -q 可以根查询条件导出,-q '{ "_id" : "10001" }' 导出uid为100的数据
    --csv  导出的文件格式是csv的。

导出整张表

[root@localhost mongodb]# mongoexport -d test -c users -o /home/mongodb/test/users.dat
connected to: 127.0.0.1
exported 24 records

导出表中部分字段

[root@localhost mongodb]# mongoexport -d test -c users --csv -f uid,name,sex -o test/users.csv
connected to: 127.0.0.1
exported 24 records

根据条件到出数据

[root@localhost mongodb]# mongoexport -d test -c users -q '{uid:{$gt:1}}' -o test/users.json
connected to: 127.0.0.1
exported 12 records

mongoimport导入表,或者表中部分字段

还原整表导出的非csv文件

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名

重点说一下--upsert,其他参数上面的命令已有提到,--upsert 插入或者更新现有数据

还原部分字段的导出文件

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名

--upsertFields根--upsert一样

还原导出的csv文件

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名

上面三种情况,还可以有其他排列组合的。

还原导出的表数据

[root@localhost mongodb]# mongoimport -d test -c users --upsert test/users.dat
connected to: 127.0.0.1
............

部分字段的表数据导入

[root@localhost mongodb]# mongoimport -d test -c users  --upsertFields uid,name,sex  test/users.dat  
connected to: 127.0.0.1  
...............................................

还原csv文件

[root@localhost mongodb]# mongoimport -d test -c users --type csv --headerline --file test/users.csv
connected to: 127.0.0.1
...........................................