国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

mongodb_導入導出數據

2019-11-08 20:30:41
字體:
來源:轉載
供稿:網友

Mongodb 導入導出數據

在mongodb中多中導入導出數據的方式,需要針對不同的應用進行選擇。本文主要講mongoexport,import及dump,restore這兩種方式

1.mongoexport,mongoimport

這是一種導成json格式的方式。Json可以導入多種數據庫,也可以在mongodb的不同版本之間進行操作 mongoexport 可以導成json及csv格式,但是csv格式必須使用-f 來表明需要導出的字段,如果是一個比較大的集合,那么需要指明每一個字段,針對這點,json還是比較方便,不過csv格式可以直接導入SQLServe.在mongodb中導出含有中文的字符可能會出現亂碼,如果文檔不是很大,可以使用txt然后指定編碼格式另存為新的一份csv會破解這種亂碼的情況。 Mongoexport -d test -c name - name.dat -h 127.0.0.1:5000 –u xxx –p xxx –authenticationDatabase=admin 其中dat的格式是數據庫將自己格式的數據文件轉換成文本格式,dat是其中一種純文本的,沒有任何數據屬性結構方面的信息,可以使用記事本打開。

2. mongodump,mongorstore

導出包括.metadata,.bson兩個文件,包含索引等信息,應該說相對是比較完整的信息。但是很可能在不同版本之間導入導出會出現問題。Mongodump備份的例子為: mongodump –h 127.0.0.1:5000 -u xxx -p xxx –authenticationDatabase=admin -d test -c name -o /home/dump 其中:h:ip與端口,u:用戶名,-p 密碼,–authenticationDatabase授權數據庫,d 需要備份的數據庫名稱,-c 備份的集合,-o 備份的目錄。所以這就相當于可以將遠程的數據庫備份到本地。只要指定了對應的ip及端口號。 Mongorestore –h 127.0.0.1:5000 -u xxx -p xxx –authenticationDatabase=admin -d test -c name /home/dump/test/name.json 在還原數據庫的時候,不需要寫出-o選項。最后一個參數默認為數據的路徑,我們需要寫明哪個json. 如果沒有-c指定集合,默認的是整個數據庫。對應的在mongorstore中不需要指定某個特定的集合,但必須指定數據庫備份的目錄。

問題集錦 1.在Mongoexport及mongodump中均可以使用-q來指定需要備份還原的符合條件的結果集。需要注意的是如果使用了ISODate類型的字段作為查找,-q后面的查詢不能直接寫成ISODate(“2017-02-12T08:00:00Z”),需要轉換成時間戳格式。并使用Date時間進行查詢。在shell中使用ISODate(“2017-02-12T08:00:00Z”).valueOf()得到數值。所以,查詢條件應為:new Date(1486886400000) 2.今天在備份數據的時候很長一段時間都是%0的進度,當然這個集合有一點大,數據量上億。好容易到了121條數據,突然報錯:error reading collection: invalid cursor。 原因:mongodb的備份數據可能會出現問題,來自于游標。網址為:https://jira.mongodb.org/browse/TOOLS-902,于是按照所述的方案:db.runCommand({setParameter: 1, cursorTimeoutMillis: 60000}),再次執行dump果然是生效了。 3.Mongorestore在導入數據是遇到:invalid BSONSize使用—batchSize=1000來解決 連接為: https://jira.mongodb.org/browse/TOOLS-939 4.在mongodb寫入數據庫時會使用壓縮算法,但是使用dump之后將會還原到原始大小,所以在備份前應該查看的是size大小而不是storageSize大小來權衡硬盤的容量

還有幾種其它的數據庫復制策略 3. db.cloneCollection 存在的問題有:1.不支持授權的原數據庫;2.如果集合已經存在則會報錯;3.只能從mongod中進行復制,不支持mongos.所以如果是分片的情況下,是不適合使用該方式。 4. db.cloneDatabase 在3.2版本中,克隆整個數據庫,會將目標數據庫鎖住,如果當前數據庫正在使用,無疑非常的危險。 5. db. collection.CopyTo 是一個全局鎖,阻止所有的讀寫操作。需要anyAction,anyResource權限,使用的是js命令。 6. db.copyDatabase 目標數據庫不能存在相同的集合,mongod之間的操作,在分片的情況下,不可使用copyDatabase

總結:所以如果是希望從一個數據庫中還原數據至另一個數據庫,且數據庫還原過程必須不能影響現有的操作,使用dump與restore相對來說是比較好的方式。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德兴市| 昔阳县| 鲁甸县| 临沧市| 华蓥市| 桃源县| 凤台县| 繁昌县| 广州市| 历史| 积石山| 剑阁县| 射洪县| 大渡口区| 宜兰县| 霍林郭勒市| 班玛县| 城步| 曲周县| 大兴区| 福泉市| 桂阳县| 大庆市| 高要市| 册亨县| 乌什县| 绵阳市| 萨嘎县| 昌宁县| 康马县| 新和县| 越西县| 马关县| 云安县| 罗平县| 龙泉市| 蓬溪县| 治多县| 工布江达县| 弋阳县| 岳西县|