mongodb数据导入导出与备份恢复


csv逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是7-bitASCII是最基本的通用编码。

json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括CC++C#JavaJavaScriptPerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。全称是JavaScript Object Notation。它是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。跟XML相类似,它独立语言,在跨平台数据传输上有很大的优势。

数据的导入与导出是存在着两种格式的。一种是json格式一种是csv格式

数据导入
json格式数据导入
[root@52 ~]# mongoimport --host 192.168.4.52 --port 27052 -d zhu -c t1 --type=json /mong0dbdir/c1.json 
2018-07-07T16:23:27.285+0800 connected to: 192.168.4.52:27052

2018-07-07T16:23:27.426+0800 imported 1 document

[--host 主机号   --port 端口号   --d  数据库名  --c 集合名  ---type 导入类型]

如果原有的数据存在在进行导入的话,会报错
[root@52 ~]# mongoimport --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c1 --type=json /mong0dbdir/c1.json 
2018-07-07T16:25:48.309+0800 connected to: 192.168.4.52:27052
2018-07-07T16:25:48.311+0800 num failures: 1
2018-07-07T16:25:48.311+0800 error inserting documents: E11000 duplicate key error collection: zhuhaiyan.c1 index: _id_ dup key: { : ObjectId('5b406cbc4d736c69117d5f1a') }
2018-07-07T16:25:48.311+0800 imported 0 documents

csv格式数据导入
[root@52 ~]# mongoimport --host 192.168.4.52 --port 27052 -d zhu -c t2 -f _id,name --type=csv /mong0dbdir/c1.csv 
2018-07-07T16:43:29.387+0800 connected to: 192.168.4.52:27052
2018-07-07T16:43:29.573+0800 imported 6 documents   -----默认会多除一行

只是导入原数据
[root@52 ~]# mongoimport --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c1 --headerline  --type=csv /mong0dbdir/c1.csv 
2018-07-07T16:59:36.947+0800 connected to: 192.168.4.52:27052
2018-07-07T16:59:36.948+0800 imported 5 documents




数据导出
json格式数据导出

[root@52 mong0dbdir]# mongoexport --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c1 --type=json >/mong0dbdir/c1.json
csv格式数据导入
[root@52 ~]# mongoexport --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c1 -f _id,name --type=csv >/mong0dbdir/c1.csv
2018-07-07T16:42:11.499+0800 connected to: 192.168.4.52:27052
2018-07-07T16:42:11.500+0800 exported 5 records
如果原有的数据存在在进行导入的话,不会报错。但是会追加进入原有的数据中
[root@52 ~]# mongoimport --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c1 -f _id,name --type=csv /mong0dbdir/c1.csv 
2018-07-07T16:51:18.393+0800 connected to: 192.168.4.52:27052
2018-07-07T16:51:18.395+0800 imported 6 documents

>db.c3.save({name:"yaya",password:"x",uid:88888,gid:99999,comment:"teacher",homedir:"/home/yaya",shell:"/bin/bash"})
WriteResult({ "nInserted" : 1 })
> db.c3.find();
{ "_id" : ObjectId("5b408822cca23043cff83c0b"), "name" : "yaya", "password" : "x", "uid" : 88888, "gid" : 99999, "comment" : "teacher", "homedir" : "/home/yaya", "shell" : "/bin/bash" }



把一个文件内容加入到mongodb文件中
[root@52 mong0dbdir]# sed -i '' c3.csv 
[root@52 mong0dbdir]# sed -i '$r passwd' c3.csv
[root@52 mong0dbdir]# sed -i 's/:/,/g' c3.csv 
[root@52 mong0dbdir]# cat c3.csv 


[root@52 mong0dbdir]# mongoimport --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c3 --headerline --drop --type=csv /mong0dbdir/c3.csv 
2018-07-07T17:47:49.711+0800 connected to: 192.168.4.52:27052
2018-07-07T17:47:49.711+0800 dropping: zhuhaiyan.c3
2018-07-07T17:47:49.922+0800 imported 42 documents


备份
[root@52 mong0dbdir]# mkdir /bakmongo
[root@52 mong0dbdir]# mongod
mongod     mongodump  
[root@52 mong0dbdir]# mongod
mongod     mongodump  
[root@52 mong0dbdir]# mongodump --host 192.168.4.52 --port 27052 -d zhuhaiyan -c c3 -o /bakmongo
2018-07-07T17:53:49.061+0800 writing zhuhaiyan.c3 to 
2018-07-07T17:53:49.062+0800 done dumping zhuhaiyan.c3 (42 documents)
[root@52 mong0dbdir]# ls
c1.csv  c1.json  c3.csv  passwd
[root@52 mong0dbdir]# cat /bakmongo/
cat: /bakmongo/: 是一个目录
[root@52 mong0dbdir]# ls
c1.csv  c1.json  c3.csv  passwd
[root@52 mong0dbdir]# cd  /bakmongo
[root@52 bakmongo]# ls
zhuhaiyan
[root@52 bakmongo]# cd zhuhaiyan/
[root@52 zhuhaiyan]# ls
c3.bson  c3.metadata.json
[root@52 zhuhaiyan]# bsondump /bakmongo/zhuhaiyan/c3.bson 


恢复数据
[root@52 zhuhaiyan]# mongorestore --host 192.168.4.52 --port 27052 -d zhu -c c3 /bakmongo/zhuhaiyan/c3.bson 

猜你喜欢

转载自blog.csdn.net/zhydream77/article/details/80954454