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/