MongoDB CookBook讀書筆記之導入導出
阿新 • • 發佈:2018-06-11
MongoDB本文主要介紹MongoDB的導入導出操作。
一、導入數據
MongoDB支持csv格式的數據導入。本節除了導入MongoDB CookBook書本提供的測試數據,還介紹了其他格式的csv文件數據導入。
[root@hdp04 ~]# wget https://raw.githubusercontent.com/kishorek/India-Codes/master/csv/pincodes.csv [root@hdp04 ~]# head pincodes.csv "PostOfficeName","Pincode","DistrictsName","City","State" "Aberdeen Bazar","744104","A&N Islands","Port Blair","Andaman Nicobar" "Bakultala","744208","A&N Islands","Port Blair","Andaman Nicobar" "Bambooflat","744107","A&N Islands","Port Blair","Andaman Nicobar" "Betapur","744201","A&N Islands","Port Blair","Andaman Nicobar" [root@hdp04 ~]# mongoimport --type csv -d admin -c postalCodes --headerline --drop pincodes.csv 2018-06-06T15:34:41.922+0800 connected to: localhost 2018-06-06T15:34:41.922+0800 dropping: admin.postalCodes 2018-06-06T15:34:42.981+0800 imported 39734 documents > db.postalCodes.count() 39734
如果csv文件中存在空字段的內容,則需在導入的時候指定每個字段名稱,如下:
[root@hdp04 ~]# tail temp.csv "zy-2-3106915","candon",,"2","zy14031238480","Pp2d8+VJOoPOUP2UVMBS4g==","520000","520300",,"1",,,, "zy-2-3106931","jason",,"2","zy14031238484","+3xWTli/pbRaswx0XxALPg==","520000","520300",,"1",,,, "zy-2-3106958","mako",,"2","zy14031238434","j8+Fz3EkRH+3JtWKNmScmA==","520000","520300",,"1",,,, "zy-2-3731038","lanqi",,"2","zy160300038106","6N1phcF07vGhDv7Vof3CPA==","520000","520300",,"1",,,, "zy-2-3175835","wgjk",,"2","zy14031352290","wxU1xIQbTAmWoR+q9LrLcw==","520000","520300",,"1",,,, [root@hdp04 ~]# mongoimport --db admin --collection temp --type csv --fields ID,NAME,FILED1,USERTYPE,PHONE,FILED2,FILED3,FILED4,PHONE1,TYPE,FILED5,FILED6,FILED7,FILED8 --file temp.csv 2018-06-10T18:25:32.739+0800 connected to: localhost 2018-06-10T18:25:35.734+0800 [#.......................] admin.temp 8.93MB/177MB (5.0%) 2018-06-10T18:25:38.736+0800 [##......................] admin.temp 17.6MB/177MB (9.9%) 2018-06-10T18:25:41.733+0800 [###.....................] admin.temp 26.2MB/177MB (14.8%) 2018-06-10T18:25:44.733+0800 [####....................] admin.temp 34.8MB/177MB (19.7%) 2018-06-10T18:25:47.733+0800 [#####...................] admin.temp 43.4MB/177MB (24.5%) 2018-06-10T18:25:50.734+0800 [#######.................] admin.temp 53.4MB/177MB (30.1%) 2018-06-10T18:25:53.733+0800 [########................] admin.temp 62.9MB/177MB (35.5%) 2018-06-10T18:25:56.736+0800 [##########..............] admin.temp 75.5MB/177MB (42.6%) 2018-06-10T18:25:59.734+0800 [###########.............] admin.temp 84.2MB/177MB (47.6%) 2018-06-10T18:26:02.734+0800 [############............] admin.temp 93.0MB/177MB (52.5%) 2018-06-10T18:26:05.733+0800 [#############...........] admin.temp 102MB/177MB (57.4%) 2018-06-10T18:26:08.733+0800 [##############..........] admin.temp 110MB/177MB (62.2%) 2018-06-10T18:26:11.734+0800 [################........] admin.temp 119MB/177MB (67.2%) 2018-06-10T18:26:14.733+0800 [#################.......] admin.temp 128MB/177MB (72.3%) 2018-06-10T18:26:17.733+0800 [##################......] admin.temp 137MB/177MB (77.6%) 2018-06-10T18:26:20.733+0800 [###################.....] admin.temp 146MB/177MB (82.7%) 2018-06-10T18:26:23.733+0800 [#####################...] admin.temp 156MB/177MB (87.9%) 2018-06-10T18:26:26.733+0800 [######################..] admin.temp 164MB/177MB (92.9%) 2018-06-10T18:26:29.734+0800 [#######################.] admin.temp 175MB/177MB (99.1%) 2018-06-10T18:26:30.197+0800 [########################] admin.temp 177MB/177MB (100.0%) 2018-06-10T18:26:30.197+0800 imported 3347522 documents > db.temp.count() 3347522
二、簡單查詢
- 統計行數
> db.postalCodes.count() 39734
2.查詢一條記錄
> db.postalCodes.findOne() { "_id" : ObjectId("5b178e91f02ce24e2dd4c95b"), "PostOfficeName" : "Aberdeen Bazar", "Pincode" : 744104, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" }
3.查找多行記錄
> db.postalCodes.find().pretty() { "_id" : ObjectId("5b178e91f02ce24e2dd4c95b"), "PostOfficeName" : "Aberdeen Bazar", "Pincode" : 744104, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c95c"), "PostOfficeName" : "Campbell Bay", "Pincode" : 744302, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c95d"), "PostOfficeName" : "Betapur", "Pincode" : 744201, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c95e"), "PostOfficeName" : "Car Nicobar", "Pincode" : 744301, "DistrictsName" : "Car Nicobar", "City" : "Car Nicobar", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c95f"), "PostOfficeName" : "Diglipur", "Pincode" : 744202, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c960"), "PostOfficeName" : "Haddo", "Pincode" : 744102, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c961"), "PostOfficeName" : "Hut Bay", "Pincode" : 744207, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c962"), "PostOfficeName" : "Havelock", "Pincode" : 744211, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c963"), "PostOfficeName" : "Bambooflat", "Pincode" : 744107, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c964"), "PostOfficeName" : "Kapanga", "Pincode" : 744304, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c965"), "PostOfficeName" : "Long Island", "Pincode" : 744203, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c966"), "PostOfficeName" : "Marine Jetty", "Pincode" : 744101, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c967"), "PostOfficeName" : "Mayabunder", "Pincode" : 744204, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c968"), "PostOfficeName" : "N S Building", "Pincode" : 744101, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c969"), "PostOfficeName" : "Nancowrie", "Pincode" : 744303, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c96a"), "PostOfficeName" : "Neel Island", "Pincode" : 744104, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c96b"), "PostOfficeName" : "New Secretariate Bldg", "Pincode" : 744105, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c96c"), "PostOfficeName" : "Bakultala", "Pincode" : 744208, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c96d"), "PostOfficeName" : "Oralkatcha", "Pincode" : 744210, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } { "_id" : ObjectId("5b178e91f02ce24e2dd4c96e"), "PostOfficeName" : "Port Blair", "Pincode" : 744101, "DistrictsName" : "A&N Islands", "City" : "Port Blair", "State" : "Andaman Nicobar" } Type "it" for more
上面的命令查找所有記錄,默認只顯示前20行,如果要查看更多的記錄,鍵入“it”繼續查看(只顯示20條記錄)。
三、導出數據
MongoDB的mongoexport默認是導出collection的所有內容,如下:
[root@hdp04 ~]# mongoexport -d admin -c postalCodes -o dd.csv 2018-06-11T11:40:19.660+0800 connected to: localhost 2018-06-11T11:40:20.658+0800 [#########...............] admin.postalCodes 16000/39734 (40.3%) 2018-06-11T11:40:21.658+0800 [###################.....] admin.postalCodes 32000/39734 (80.5%) 2018-06-11T11:40:21.873+0800 [########################] admin.postalCodes 39734/39734 (100.0%) 2018-06-11T11:40:21.873+0800 exported 39734 records
如果要導出指定的字段內容,需要加上--fields參數,如下:
[root@hdp04 ~]# mongoexport -d admin -c postalCodes -o ee.csv --fields ‘PostOfficeName,Pincode,DistrictsName‘ 2018-06-11T11:41:33.805+0800 connected to: localhost 2018-06-11T11:41:34.803+0800 [#########...............] admin.postalCodes 16000/39734 (40.3%) 2018-06-11T11:41:35.495+0800 [########################] admin.postalCodes 39734/39734 (100.0%) 2018-06-11T11:41:35.495+0800 exported 39734 records
MongoDB CookBook讀書筆記之導入導出