酉卒之子

导航

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/

posted on 2021-06-23 14:48  酉卒之子  阅读(2487)  评论(0编辑  收藏  举报