1. 程式人生 > 其它 >MongoDB匯入匯出和踩過的坑

MongoDB匯入匯出和踩過的坑

從網上一搜,基本大概都是這樣的

匯出:mongoexport --port 29050 -u zdha -p zdha1234 -d meerkat320 -c person --type=json -o /opt/roman/235-meerkat320-person.json

匯入:mongoimport --port 27017 -u zdha -p zdha1234 -d meerkat-min -c person-320 --type=json --file /opt/roman/235-meerkat320-person.json

直接試了上面的匯入語句,報錯:bash: mongoexport: command not found...

Q:bash: mongoexport: command not found...
A:如果你正在使用git bash,請使用以下命令
$ ./mongo

調整後,在241上測試匯出:

./mongo mongoexport --port 27017 -u zdha -p zdha1234 -d meerkat-min -c car --type=json -o /opt/roman/235-meerkat320-car.json

以上語句存在的錯誤:
(1)mongo命令敲的不對
(2)預設是連本地,筆者而言就是192.168.89.9
所以修改過之後的就是:

./mongoexport -h 192.168.31.241 -port 27017 -u zdha -p zdha1234 -d meerkat-min -c car --type=json -o /opt/roman/235-meerkat320-car.json

too many positional arguments: [27017]

再調整:

./mongoexport -h 192.168.31.241:27017 -u zdha -p zdha1234 -d meerkat-min -c car --type=json -o /opt/roman/235-meerkat320-car.json

error connecting to db server: server returned error on SASL authentication step: Authentication failed.

最終調整,併成功了的命令(在241上執行的):

./mongoexport -h 192.168.31.241:27017 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat-min -c car --type=json -o /opt/roman/235-meerkat320-car.json

=================== 終於匯出的好了=================

現在開始切換到測試的庫去,繼續在241上執行匯出單表命令:

./mongoexport -h 192.168.31.235:29050 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat320 -c car --type=json -o /opt/roman/235-meerkat320-car.json

2021-05-25T15:57:06.046+0800 exported 78 records

下面開始準備吧測試環境匯出的資料匯入到開發環境:

./mongoimport -h 192.168.31.241:27017 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat-min -c car --type=json -o /opt/roman/235-meerkat320-car.json

error parsing command line options: unknown option "o"

匯入語句指定的匯入檔案路徑,不能用 -o,而是直接跟著後面,如下:

./mongoimport -h 192.168.31.241:27017 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat-min -c car --type=json /opt/roman/235-meerkat320-car.json

2021-05-25T16:06:02.507+0800 imported 78 documents

可以看到已經匯入成功了,如果立馬又重複執行一遍匯入語句,會報錯,如下:
- E11000 duplicate key error collection: meerkat-min.car index: _id_ dup key: { : "a47bcde57508d073bbc5c9189bd1fafe" }

可以對匯入語句做下優化,加上--upsert

./mongoimport -h 192.168.31.241:27017 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat-min -c car --type=json /opt/roman/235-meerkat320-car.json --upsert

單表的成功了,現在改成全庫的,由於全庫的就是“備份”的概念了,要使用./mongodump命令

匯出:

./mongodump -h 192.168.31.235:29050 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat320 -o /opt/roman/235-meerkat320/

匯入:

./mongorestore -h 192.168.31.241:27017 -u zdha -p zdha1234 --authenticationDatabase admin -d meerkat-min /opt/roman/235-meerkat320/meerkat320/