前言
最近堆的需要整理的东西有点多. 慢慢把这些东西全部整理出来.
之前有使用mongoimport
和mongoexport
导入导出单表的操作. 本次主要介绍的是mongodump
和mongostore
.
基本操作命令
- 导出
./mongodump.exe -h 127.0.0.1 -p 27017 -u username -p password --authenticationDataBase SeanDataBase --db SeanDataBase -o C:\\mongodb\\dump\\
-h/--hostname
: hostname-u
:username-p
: password--authenticationDataBase
: 授权数据库--db
: 指定需要导出的db
. 不写导出全部.-o
: 导出文件目录. 也有不用-o
, 直接写<path>
的.
- 导入
./mongorestore.exe --host 127.0.0.1 --port 27017 --db SeanDataBase2 --dir C:\\mongodb\\dump\\SeanDataBase
--host
: 服务器地址--port
: 端口--db
: 导入的DB名称. 可以随意取名. 不必要和导出的名字一致.--dir
: 导入的文件地址.
操作记录
dump
mongodump -h 127.0.0.1 -port 27017 --db yanxml -o /Users/sean/dump/
- 导出记录
- 查看导出的文件
- 数据库原文件
- 注意: 这里你会发现.
Collection
为4个, 但是导出的文件为6个(6/3). 这其实是不对应上的. 这个是因为文件系统, 大小写不敏感导致的. 大写文件和小写文件哪个后写会覆盖前一个文件.
导入
- 先新建一个db.
yanxml_store
- 执行dump命令
mongorestore --host 127.0.0.1 --port 27017 --db yanxml_store --dir /Users/sean/dump/yanxml/
注意: 此处可以看到. 有一句报错语句. 这个其实是因为重名表导致的. 因为在MongoDB
内helloworld
和HelloWorld
被认为是2张表. 但是操作系统(此处为Mac)认为是一个文件. 后一个文件覆盖前一个文件, 且未覆盖完全. 所以会导致这个BSON
异常. 此处的BSON
异常是因为表重名导致文件覆盖导致的.
Failed: error restoring fromst.bson: reading bson input: invalid BSONSize:
这个问题. 我们后来知道了是因为大小写文件被覆盖导致的. 之前看过这些参考资料.
由于无效的BSONSize,mongorestore失败(mongorestore fails due to invalid BSONSize)
stackoverflow-1stackoverflow-2stackoverflow-3
Windows 开启目录大小写不敏感
由于工作的电脑为Windows. 此处顺便记录一下Windows
如何解决大小写敏感问题.
- 控制面板
fsutil 不支持该请求
解决办法. - fsutil 不支持该请求
- powershell执行命令
打开powershell,记得用管理员权限打开.
fsutil.exe file SetCaseSensitiveInfo 文件夹 enable
[1]. Windows文件(名/夹)大小写敏感识别方法 [2]. windows 10 大小写敏感
Linux 如何解决大小写敏感问题
linux系统大小写敏感
Mac - 20210712
后来我用mac
也进行了测试. 发现mac也是大小写不区分的. Mac解决的方案要更加的麻烦.
MongoDB 如何查看版本信息
定位问题的时候. 最开始是怀疑MongoDB的版本不对.
# 进入后
db.version();
#mongo命令
./mongo --version
MongoDB查看版本信息总结
Reference
[1]. mongodb远程连接以及备份、还原、导出、导入 [2]. MongoDB 逻辑备份工具mongodump [3]. MongoDB 备份与还原 mongodump、mongorestore [4]. 菜鸟教程- MongoDB 备份(mongodump)与恢复(mongorestore) [5]. MongoDB备份和恢复命令
撑不住了. 今天的文章就写到这吧.