วิธีการนำเข้ารูปแบบไฟล์. bson บน mongodb


162

ฉันส่งออกฐานข้อมูลบนเซิร์ฟเวอร์โดยใช้mongodumpคำสั่งและการถ่ายโอนข้อมูลจะถูกเก็บไว้ใน.bsonไฟล์ ฉันต้องนำเข้าข้อมูลนั้นในเซิร์ฟเวอร์ท้องถิ่นโดยใช้mongorestoreคำสั่ง อย่างไรก็ตามมันไม่ทำงาน mongorestoreคำสั่งที่ถูกต้องคืออะไรและอื่น ๆtools to restore dbคืออะไร?

คำตอบ:


342

มันง่ายมากที่จะนำเข้าไฟล์. bson :

mongorestore -d db_name -c collection_name /path/file.bson

ใส่หีบสำหรับคอลเลกชันเดียวลองนี้:

mongorestore --drop -d db_name -c collection_name /path/file.bson

สำหรับการกู้คืนโฟลเดอร์ทั้งหมดที่ส่งออกโดยmongodump:

mongorestore -d db_name /path/

4
นอกจากนี้ยังมีประโยชน์สำหรับไฟล์ bson ที่ส่งออกผ่านmongoexportหากคุณกำลังส่งออกคอลเล็กชันเดี่ยว mongoimportทำให้ฉันมีข้อผิดพลาด "อักขระที่ไม่ถูกต้อง" ขอบคุณ!
divillysausages

4
SyntaxError: ขาดหายไป; ก่อนข้อความสั่ง @ (เชลล์): 1: 16
151291

3
บางทีคุณสามารถเพิ่มว่าคำสั่งเหล่านี้จะถูกเรียกใช้จากพรอมต์คำสั่งและไม่ได้มาจากคอนโซล mongo ที่จะช่วยผู้ใช้ใหม่
ความฝัน

2
กำลังเพิ่มคำตอบนี้ สำหรับผู้ที่ต้องการกู้คืนไฟล์ bson จากระยะไกล Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper

1
ขอบคุณมันใช้งานได้กับโฟลเดอร์ที่สมบูรณ์ของฉันหลังจากการเสริมจาก tar.gz
Braham Dev Yadav

63

mongorestoreเป็นเครื่องมือในการใช้งานเพื่อนำเข้าไฟล์ bson mongodumpที่ถูกทิ้ง

จากเอกสาร :

mongorestore ใช้เอาต์พุตจาก mongodump และเรียกคืน

ตัวอย่าง:

# On the server run dump, it will create 2 files per collection
# in ./dump directory:
# ./dump/my-collection.bson
# ./dump/my-collection.metadata.json
mongodump -h 127.0.0.1 -d my-db -c my-collection

# Locally, copy this structure and run restore.
# All collections from ./dump directory are picked up.
scp user@server:~/dump/**/* ./
mongorestore -h 127.0.0.1 -d my-db

ฉันต้องรักษาdump/dbName/collectionName.bsonโครงสร้างของโฟลเดอร์หรือไม่? ฉันใช้mongodumpแต่ตอนนี้ฉันต้องการนำเข้าโดยใช้mongorestoreบนกล่อง Linux ระยะไกล
เควินเมเรดิ ธ

@ เควิน: ฉันไม่แน่ใจว่าจะซื่อสัตย์ แต่ฉันจะคิดอย่างนั้น ใช้โปรแกรม FTP เพื่อถ่ายโอนไฟล์พร้อมกับโครงสร้างโฟลเดอร์หรือไม่?
Cameron

5
ผมสามารถที่จะประสบความสำเร็จในการนำเข้า Mongo DB ใช้ที่ไม่ใช่ "การถ่ายโอนข้อมูล" ชื่อโฟลเดอร์:mongorestore --collection people --db accounts myDump/accounts/people.bson
เควินเมเรดิ ธ

35
bsondump collection.bson > collection.json

แล้ว

mongoimport -d <dbname> -c <collection> < collection.json

7
สังเกตคำเตือนจากเอกสารนำเข้า - ส่งออกของ MongoDB :mongoimport and mongoexport do not reliably preserve all rich BSON data types because JSON can only represent a subset of the types supported by BSON. As a result, data exported or imported with these tools may lose some measure of fidelity.
LucasB

อ๋อ สิ่งนี้จะทำให้ตัวอักษรจีน / ญี่ปุ่นยุ่ง
2619824

10

รันบรรทัดรับคำสั่งต่อไปนี้และคุณควรอยู่ในไดเรกทอรี Mongo bin

mongorestore -d db_name -c collection_name path/file.bson


9

คุณต้องเรียกใช้คำสั่ง mongorestore ผ่านทาง cmd และไม่ใช่ใน Mongo Shell ... ดูคำสั่งด้านล่างใน ...

รันคำสั่งนี้บน cmd (ไม่ใช่บน Mongo shell)

>path\to\mongorestore.exe -d dbname -c collection_name path\to\same\collection.bson

นี่path\to\mongorestore.exeคือเส้นทางของmongorestore.exeโฟลเดอร์ bin ภายในของ MongoDB dbname เป็นชื่อของ databse collection_nameเป็นชื่อของ collection.bson path\to\same\collection.bsonเป็นเส้นทางขึ้นสู่คอลเลกชันนั้น

ตอนนี้จาก mongo shell คุณสามารถตรวจสอบว่าฐานข้อมูลนั้นถูกสร้างขึ้นหรือไม่ (ถ้าไม่มีอยู่ฐานข้อมูลที่มีชื่อเดียวกันจะถูกสร้างขึ้นพร้อมกับคอลเลกชัน)


4

เพียงเพื่อการอ้างอิงถ้าใครยังคงดิ้นรนกับ mongorestore

คุณต้องรัน monogorestore ใน terminal / command prompt และไม่ได้อยู่ในคอนโซล mongo

$ mongorestore -d db_name /path_to_mongo_dump/

สำหรับรายละเอียดเพิ่มเติมคุณสามารถเยี่ยมชมเอกสารอย่างเป็นทางการ

https://docs.mongodb.com/manual/reference/program/mongorestore/


2

หากการเข้าถึงของคุณจากระยะไกลคุณสามารถทำได้

สำหรับ bson:

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people "/home/${USER}/people.bson"

สำหรับ bson ที่บีบอัดในรูปแบบ. gz (gzip):

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people --gzip --dir "/home/${USER}/people.bson.gz"

1

mongorestore -d db_name / path /

ตรวจสอบให้แน่ใจว่าคุณเรียกใช้แบบสอบถามนี้ในโฟลเดอร์ bin ของ mongoDb

C: \ Program Files \ MongoDB \ Server \ 4.2 \ bin -

จากนั้นเรียกใช้คำสั่งด้านบน


0

ฉันเคยใช้สิ่งนี้:

mongorestore -d databasename -c file.bson fullpath/file.bson

1. คัดลอกพา ธ ไฟล์และชื่อไฟล์จากคุณสมบัติ (ลองใส่ไฟล์ bson ทั้งหมดในโฟลเดอร์อื่น) 2. ใช้สิ่งนี้ซ้ำแล้วซ้ำอีกโดยเปลี่ยนชื่อไฟล์เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.