首页 > 代码库 > mongodb备份恢复,数据导入导出
mongodb备份恢复,数据导入导出
数据导出 mongoexport
假设库里有一张apachelog表,里面有2 条记录,我们要将它导出
/test/mongodb/bin/mongouse wxdata
switched to db wxdata
db.apachelog.find();
{ "_id" : ObjectId("53993357e0e73ac14b29da8a"), "host" : "66.249.69.194", "method" : "GET", "uri" : "/uploads/yaopinimg/2013012415323219.jpg", "httpstatus" : 200, "size" : 7428, "agent" : "Googlebot-Image/1.0", "status" : 0 }
1 常用导出方法
/test/mongodb/bin/mongoexport -d wxdata -c apachelog -o apachelog.dat
connected to: 127.0.0.1
exported 2 records
cat apachelog.dat
{ "_id" : ObjectId("53993357e0e73ac14b29da8a"), "host" : "66.249.69.194", "method" : "GET", "uri" : "/uploads/yaopinimg/2013012415323219.jpg", "httpstatus" : 200, "size" : 7428, "agent" : "Googlebot-Image/1.0", "status" : 0 }
参数说明:
-d 指明使用的库, 本例中为"wxdata"
-c 指明要导出的表, 本例中为"apachelog"
-o 指明要导出的文件名, 本例中为"apachelog.dat"
从上面可以看到导出的方式使用的是JSON 的样式.
2 导出CSV格式的文件
/test/mongodb/bin/mongoexport -d wxdata -c apachelog --csv -f host,time,method -o apachelog_csv.dat
connected to: 127.0.0.1
exported 2 records
cat apachelog_csv.dat
host,time,method
"66.249.69.194","12/Jun/2014:12:57:59","GET"
参数说明:
--csv 指要要导出为csv 格式
-f 指明需要导出哪些例
更详细的用法可以 mongoexport –help 来查看
数据导入mongoimport
1 导入JSON 数据
我们先将表apachelog 删除掉,以便演示效果
db.apachelog.drop();
true
show collections;
system.indexes
然后导入数据
/test/mongodb/bin/mongoimport -d wxdata -c apachelog apachelog.dat
connected to: 127.0.0.1
imported 1 objects
导入数据的时候会隐式创建表结构
2 导入CSV数据
我们先将表apachelog 删除掉,以便演示效果
db.apachelog.drop();
true
show collections;
system.indexes
然后导入数据
/test/mongodb/bin/mongoimport -d wxdata -c apachelog --type csv --headerline --file apachelog_csv.dat
connected to: 127.0.0.1
imported 1 objects
参数说明:
--type 指明要导入的文件格式
--headerline 批明不导入第一行,因为第一行是列名
--file 指明要导入的文件路径
注意:
CSV 格式良好,主流数据库都支持导出为CSV 的格式,所以这种格式非常利于异构数据迁移
数据备份mongodump
用mongodump 来做MongoDB 的库或表级别的备份
备份wxdata 数据库
/test/mongodb/bin/mongodump -d wxdata
connected to: 127.0.0.1
DATABASE: wxdata to dump/wxdata
wxdata.system.indexes to dump/wxdata/system.indexes.bson
1 objects
wxdata.apachelog to dump/wxdata/apachelog.bson
2 objects
此时会在当前目录下创建一个dump 目录,用于存放备份出来的文件
也可以指定备份存放的目录,
/test/mongodb/bin/mongodump -d wxdata -o wxdata_dump
connected to: 127.0.0.1
DATABASE: wxdata to wxdata_dump/wxdata
wxdata.system.indexes to
wxdata_dump/wxdata/system.indexes.bson
1 objects
wxdata.apachelog to wxdata_dump/wxdata/apachelog.bson
2 objects
这个例子中将备份的文件存在了当前目录下的wxdata_dump 目录下
数据恢复mongorestore
由于刚刚已经做了备份,所以我们先将库wxdata 删除掉
use wxdata
switched to db wxdata
db.dropDatabase()
{ "dropped" : "wxdata", "ok" : 1 }
show dbs
admin (empty)
local (empty)
test (empty)
接下来我们进行数据库恢复
/test/mongodb/bin/mongorestore -d wxdata wxdata_dump/*
connected to: 127.0.0.1
Wed Apr 11 00:03:03 wxdata_dump/wxdata/apachelog.bson
Wed Apr 11 00:03:03 going into namespace [wxdata.apachelog]
Wed Apr 11 00:03:03 2 objects found
Wed Apr 11 00:03:03 wxdata_dump/wxdata/system.indexes.bson
Wed Apr 11 00:03:03 going into namespace [wxdata.system.indexes]
经验证数据库又回来了,其实要是想恢复库,也大可不必先删除wxdata 库,只要指
明--drop 参数,就可以在恢复的时候先删除表然后再向表中插入数据.