mongodb数据的导入导出备份恢复_万金油_新浪博客

数据的导出

• 语法格式 1
– #mongoexport [--host IP 地址 --port 端口 ]
-d 库名 -c 集合名 -f 字段名 1, 字段名 2
--type=csv
> 目录名 / 文件名 .csv

[root@host51 ~]# mongoexport  --help

[root@host51 ~]# mkdir /mbak
[root@host51 ~]# mongoexport  --host 192.168.4.51 --port 27051 -d ddsdb -c c2 -f name,school --type=csv > /mbak/c2.csv
2018-08-01T15:47:11.207+0800 connected to: 192.168.4.51:27051
2018-08-01T15:47:11.208+0800 exported 14 records
[root@host51 ~]# cat  /mbak/c2.csv 
name,school
bob,tarena
zhangsan,danei
张三,达外
jack,tarena
lilei,tarena
xiaoqiang,
tom,
tom,
php,
jj,
kk,
,
,
,

语法格式 2
– #mongoexport --host IP 地址 --port 端口
-d 库名 -c 集合名 -q ‘{ 条件 }’ -f 字段名 1 ,字段名 2  --type=csv > 目录名 / 文件名 .csv
注意:导出为 csv 格式必须使用 -f 指定字段名列表 !!!

[root@host51 ~]# mongoexport  --host 192.168.4.51 --port 27051 -d ddsdb -c c2 --type=json > /mbak/c2.json
2018-08-01T15:51:48.273+0800 connected to: 192.168.4.51:27051
2018-08-01T15:51:48.275+0800 exported 14 records
[root@host51 ~]# cat /mbak/c2.json 
{"_id":{"$oid":"5b61513d32bc8e678acd6f3f"},"name":"bob","school":"tarena"}
{"_id":{"$oid":"5b61519132bc8e678acd6f40"},"name":"zhangsan","school":"danei"}
{"_id":{"$oid":"5b6151b132bc8e678acd6f41"},"name":"张三","school":"达外"}
{"_id":{"$oid":"5b61526b32bc8e678acd6f42"},"name":"jack","school":"tarena","single":false}
{"_id":{"$oid":"5b6152ea32bc8e678acd6f43"},"name":"lilei","school":"tarena","single":false,"pay":null}
{"_id":{"$oid":"5b61553632bc8e678acd6f44"},"name":"xiaoqiang","like":["gril","eat","piao","sleep"]}
{"_id":{"$oid":"5b61559c32bc8e678acd6f45"},"name":"tom","xf":195}
{"_id":{"$oid":"5b6155ef32bc8e678acd6f46"},"name":"tom","xf":{"$numberLong":"4918"}}
{"_id":{"$oid":"5b61571c32bc8e678acd6f47"},"name":"php","code":{"$code":"function (){}"},"like":100000.0}
{"_id":{"$oid":"5b61590132bc8e678acd6f49"},"name":"jj","stu_id":{"$oid":"5b61590132bc8e678acd6f48"},"class":"nsd1804"}
{"_id":{"$oid":"5b6159bd32bc8e678acd6f4a"},"name":"kk","sr":"Wed Aug 01 2018 14:57:01 GMT+0800 (CST)"}
{"_id":{"$oid":"5b615d4e32bc8e678acd6f4b"},"ywzd":{"writer":"dmy","pay":68.0,"vers":"v2"}}
{"_id":{"$oid":"5b615e2d32bc8e678acd6f4c"},"tarena":{"address":"beijing","tell":8.888888e+06,"person":"harry"}}
{"_id":{"$oid":"5b615f4832bc8e678acd6f4d"},"jbname":"shell","rcode":{"$regex":".$","$options":""}}
[root@host51 ~]# 

数据导入:

[root@host51 ~]# mongoimport  --help

语法格式 1
– #mongoimport –host IP 地址 – port 端口    -d 库名  – c 集合名    --type=json        目录名 / 文件名 .json

> show dbs
admin   0.000GB
config  0.000GB
ddsdb   0.000GB
local   0.000GB

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c col --type=json  /mbak/c2.json 
2018-08-01T16:22:54.238+0800 connected to: 192.168.4.51:27051
2018-08-01T16:22:54.457+0800 imported 14 documents



[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c stu --type=csv  /mbak/c2.csv 
2018-08-01T16:37:03.316+0800 error validating settings: must specify --fields, --fieldFile or --headerline to import this file type
2018-08-01T16:37:03.316+0800 try 'mongoimport --help' for more information

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c stu  --headerline --type=csv  /mbak/c2.csv 
2018-08-01T16:38:18.720+0800 connected to: 192.168.4.51:27051
2018-08-01T16:38:18.804+0800 imported 14 documents

[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c tea -f name,school  --type=csv  /mbak/c2.csv 
2018-08-01T16:40:04.868+0800 connected to: 192.168.4.51:27051
2018-08-01T16:40:05.019+0800 imported 15 documents


• 语法格式 2
– #mongoimport –host IP 地址 – port 端口
-d 库名 – c 集合名
--type=csv --headerline [--drop] 目录名 / 文件名.csv

> db.tea.count()
30
[root@host51 ~]# mongoimport  --host 192.168.4.51  --port 27051 -d gamedb -c tea -f name,school  --type=csv --drop  /mbak/c2.csv 
2018-08-01T16:41:44.333+0800 connected to: 192.168.4.51:27051
2018-08-01T16:41:44.334+0800 dropping: gamedb.tea
2018-08-01T16:41:44.454+0800 imported 15 documents

> db.tea.count()
15

练习:
把系统文件(/etc/passwd) 存储到mongodb数据库里的userdb的coluser的集合里

> db.coluser.find()
{ "_id" : ObjectId("5b617485df5cbc631e0dc4bc"), "name" : "yaya", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "my gril", "homedir" : "/home/yaya", "shell" : "/bin/bash" }

[root@host51 ~]# mongoexport  --host 192.168.4.51 --port 27051 -d userdb -c coluser -f name,password,uid,gid,comment,homedir,shell --type=csv  >  /mbak/coluser.csv
2018-08-01T16:54:08.030+0800 connected to: 192.168.4.51:27051
2018-08-01T16:54:08.032+0800 exported 1 record
[root@host51 ~]# cat  /mbak/coluser.csv 
name,password,uid,gid,comment,homedir,shell
yaya,x,1,1,my gril,/home/yaya,/bin/bash

把 /etc/password/弄成/mbak/coluser.csv 一样的文件格式:
[root@host51 ~]# cp /etc/passwd /mbak/
[root@host51 ~]# cd /mbak/
[root@host51 mbak]# ls
c2.csv  c2.json  c3.json  coluser.csv  passwd
[root@host51 mbak]# sed -i 's/:/,/g' passwd 
[root@host51 mbak]# head -2 passwd 
root,x,0,0,root,/root,/bin/bash
bin,x,1,1,bin,/bin,/sbin/nologin

[root@host51 mbak]# sed -i '$r passwd' coluser.csv 
[root@host51 mbak]# head  -5 coluser.csv 
name,password,uid,gid,comment,homedir,shell
yaya,x,1,1,my gril,/home/yaya,/bin/bash
root,x,0,0,root,/root,/bin/bash
bin,x,1,1,bin,/bin,/sbin/nologin



把文件导入到库里:

[root@host51 mbak]# mongoimport  --host 192.168.4.51 --port 27051 -d userdb -c coluser --headerline --drop --type=csv /mbak/coluser.csv 
2018-08-01T17:08:36.078+0800 connected to: 192.168.4.51:27051
2018-08-01T17:08:36.078+0800 dropping: userdb.coluser
2018-08-01T17:08:36.240+0800 imported 41 documents

> show dbs
admin   0.000GB
config  0.000GB
ddsdb   0.000GB
gamedb  0.000GB
local   0.000GB
userdb  0.000GB
> use userdb
switched to db userdb
> show tables
coluser
> db.coluser.find()
{ "_id" : ObjectId("5b6178943dd57015866eb75c"), "name" : "yaya", "password" : "x", "uid" : 1, "gid" : 1, "comment" : "my gril", "homedir" : "/home/yaya", "shell" : "/bin/bash" }
{ "_id" : ObjectId("5b6178943dd57015866eb75d

数据备份
• 备份数据所有库到当前目录下的 dump 目录下     //备份所有库所有表
# mongodump [ --host ip 地址 --port 端口 ]

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051

[root@host51 mbak]# ls dump/             //在当前目录生成dump目录
admin  ddsdb  gamedb  userdb

• 备份时指定备份的库和备份目录
# mongodump [ --host ip 地址 --port 端口 ] -d 数据库名 -c 集合名 -o 目录
                                                                                                       目录无需事先创建 备份时指定即可!!! 

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c col
2018-08-01T17:37:20.674+0800 writing gamedb.col to 
2018-08-01T17:37:20.675+0800 done dumping gamedb.col (14 documents)
[root@host51 mbak]# ls dump/gamedb/
col.bson           col.metadata.json  stu.bson           stu.metadata.json  tea.bson           tea.metadata.json

  
[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c stu  /gamedbdir
2018-08-01T17:34:02.924+0800 positional arguments not allowed: [/gamedbdir]
2018-08-01T17:34:02.924+0800 try 'mongodump --help' for more information
[root@host51 mbak]# mkdir  /gamedbdir
[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c stu  /gamedbdir
2018-08-01T17:34:46.646+0800 positional arguments not allowed: [/gamedbdir]
2018-08-01T17:34:46.646+0800 try 'mongodump --help' for more information

[root@host51 mbak]# mongodump  --host 192.168.4.51 --port 27051  -d gamedb -c stu  -o /bake
2018-08-01T17:36:10.018+0800 writing gamedb.stu to 
2018-08-01T17:36:10.020+0800 done dumping gamedb.stu (14 documents)
[root@host51 mbak]# ls  /bake/
gamedb
[root@host51 mbak]#  ls /bake/gamedb/
stu.bson  stu.metadata.json


    
• 查看 bson 文件内容
#bsondump ./dump/bbs/t1.bson

[root@host51 mbak]# bsondump  ./dump/ddsdb/c2.bson 
{"_id":{"$oid":"5b61513d32bc8e678acd6f3f"},"name":"bob","school":"tarena"}
{"_id":{"$oid":"5b61519132bc8e678acd6f40"},"name":"zhangsan","school":"danei"}
{"_id":{"$oid":"5b6151b132bc8e678acd6f41"},"name":"张三","school":"达外"}
{"_id":{"$oid":"5b61526b32bc8e678acd6f42"},"name":"jack","school":"tarena","single":false}
{"_id":{"$oid":"5b6152ea32bc8e678acd6f43"},"name":"lilei","school":"tarena","single":false,"pay":null}
{"_id":{"$oid":"5b61553632bc8e678acd6f44"},"name":"xiaoqiang","like":["gril","eat","piao","sleep"]}
{"_id":{"$oid":"5b61559c32bc8e678acd6f45"},"name":"tom","xf":195}
{"_id":{"$oid":"5b6155ef32bc8e678acd6f46"},"name":"tom","xf":{"$numberLong":"4918"}}
{"_id":{"$oid":"5b61571c32bc8e678acd6f47"},"name":"php","code":{"$code":"function (){}"},"like":100000.0}
{"_id":{"$oid":"5b61590132bc8e678acd6f49"},"name":"jj","stu_id":{"$oid":"5b61590132bc8e678acd6f48"},"class":"nsd1804"}
{"_id":{"$oid":"5b6159bd32bc8e678acd6f4a"},"name":"kk","sr":"Wed Aug 01 2018 14:57:01 GMT+0800 (CST)"}
{"_id":{"$oid":"5b615d4e32bc8e678acd6f4b"},"ywzd":{"writer":"dmy","pay":68.0,"vers":"v2"}}
{"_id":{"$oid":"5b615e2d32bc8e678acd6f4c"},"tarena":{"address":"beijing","tell":8.888888e+06,"person":"harry"}}
{"_id":{"$oid":"5b615f4832bc8e678acd6f4d"},"jbname":"shell","rcode":{"$regex":".$","$options":""}}
2018-08-01T17:41:33.663+0800 14 objects found

数据恢复:
• 语法格式
– mongorestore --host IP 地址 --port 端口 -d 数据库名 [ -c 集合名 ] 备份目录名

模拟数据丢失:
方法一:
> db.stu.remove({})
WriteResult({ "nRemoved" : 14 })

[root@host51 mbak]# mongorestore  --host 192.168.4.51 --port 27051 -d gamedb  -c stu /bake/gamedb/stu.bson 
2018-08-01T17:46:20.073+0800 checking for collection data in /bake/gamedb/stu.bson
2018-08-01T17:46:20.074+0800 reading metadata for gamedb.stu from /bake/gamedb/stu.metadata.json
2018-08-01T17:46:20.075+0800 restoring gamedb.stu from /bake/gamedb/stu.bson
2018-08-01T17:46:20.137+0800 no indexes to restore
2018-08-01T17:46:20.137+0800 finished restoring gamedb.stu (14 documents)
2018-08-01T17:46:20.137+0800 done

> db.stu.count()
14
> db.stu.find()

方法二:  //重新建立一个新的集合
[root@host51 mbak]# mongorestore  --host 192.168.4.51 --port 27051 -d gamedb  -c regtab  /bake/gamedb/stu.bson 
2018-08-01T17:47:47.238+0800 checking for collection data in /bake/gamedb/stu.bson
2018-08-01T17:47:47.240+0800 reading metadata for gamedb.regtab from /bake/gamedb/stu.metadata.json
2018-08-01T17:47:47.332+0800 restoring gamedb.regtab from /bake/gamedb/stu.bson
2018-08-01T17:47:47.395+0800 no indexes to restore
2018-08-01T17:47:47.395+0800 finished restoring gamedb.regtab (14 documents)
2018-08-01T17:47:47.395+0800 done

> show tables
col
regtab
stu
tea

方法三: //建立一个新的库和新的集合
[root@host51 mbak]# mongorestore  --host 192.168.4.51 --port 27051 -d buydb  -c regtab   /bake/gamedb/stu.bson 
2018-08-01T17:50:33.832+0800 checking for collection data in /bake/gamedb/stu.bson
2018-08-01T17:50:33.833+0800 reading metadata for buydb.regtab from /bake/gamedb/stu.metadata.json
2018-08-01T17:50:33.926+0800 restoring buydb.regtab from /bake/gamedb/stu.bson
2018-08-01T17:50:33.989+0800 no indexes to restore
2018-08-01T17:50:33.989+0800 finished restoring buydb.regtab (14 documents)
2018-08-01T17:50:33.989+0800 done

> use buydb
switched to db buydb
> show tables
regtab














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值