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/