MongoDB导入导出
物理备份
物理备份是指将MongoDB数据库文件复制到备份服务器或存储设备上。MongoDB使用的是一种称为"copy-on-write"的技术,这意味着当修改MongoDB数据库时,MongoDB会将数据复制到一个新的文件中,而原始文件仍然保留不变。这使得可以在不中断服务的情况下备份MongoDB数据库。
物理备份使用mongodump
和mongorestore
命令行工具。mongodump
命令将MongoDB数据库的数据导出到一个备份文件夹中,而mongorestore
命令将备份数据恢复到MongoDB数据库中
以下是使用mongodump
命令进行物理备份的示例:
mongodump --host <hostname> --port <port> --username <username> --password <password> --db <database> --out <output_directory>
上面的命令将MongoDB数据库的数据备份到output_directory
文件夹中。
以下是使用mongorestore
命令进行物理恢复的示例:
mongorestore --host <hostname> --port <port> --username <username> --password <password> --db <database> <input_directory>
上面的命令将input_directory
文件夹中的MongoDB备份数据恢复到MongoDB数据库中
逻辑备份
逻辑备份是指将MongoDB数据库中的数据导出到一个格式化的文件中,例如JSON或CSV。逻辑备份可以使用MongoDB的导入和导出功能实现。逻辑备份可以使备份文件更加可读,但备份和恢复数据的速度通常比物理备份慢。
以下是使用mongoexport
命令进行逻辑备份的示例:
mongoexport --host <hostname> --port <port> --username <username> --password <password> --db <database> --collection <collection> --out <output_file>
上面的命令将名为collection
的MongoDB集合的数据导出到output_file
文件中。
以下是使用mongoimport
命令进行逻辑恢复的示例:
mongoimport --host <hostname> --port <port> --username <username> --password <password> --db <database> --collection <collection> --file <input_file>
上面的命令将`input_file中的数据导入到名为collection
的MongoDB集合中。
mongoexport导出表,或者表中部分字段
1,常用命令格式
mongoexport -h IP --port 端口 -u 用户名 -p 密M -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名
上面的参数好理解,重点说一下:
-f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
-q 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据
--csv 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点
2,导出整张表
# mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat
connected to: 127.0.0.1
exported 4 records
3,导出表中部分字段
# mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv
connected to: 127.0.0.1
exported 4 records
4,根据条件敢出数据
# mongoexport -d tank -c users -q '{uid:{$gt:1}}' -o tank/users.json
connected to: 127.0.0.1
exported 3 records
mongoimport导入表,或者表中部分字段
1,常用命令格式
1.1,还原整表导出的非csv文件
mongoimport -h IP --port 端口 -u 用户名 -p 密M -d 数据库 -c 表名 --upsert --drop 文件名
重点说一下--upsert,其他参数上面的命令已有提到,--upsert 插入或者更新现有数据
1.2,还原部分字段的导出文件
mongoimport -h IP --port 端口 -u 用户名 -p 密M -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名
--upsertFields根--upsert一样
1.3,还原导出的csv文件
mongoimport -h IP --port 端口 -u 用户名 -p 密M -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名
上面三种情况,还可以有其他排列组合的。
2,还原导出的表数据
# mongoimport -d tank -c users --upsert tank/users.dat
connected to: 127.0.0.1
Tue Dec 3 08:26:52.852 imported 4 objects
3,部分字段的表数据导入
# mongoimport -d tank -c users --upsertFields uid,name,sex tank/users.dat
connected to: 127.0.0.1
Tue Dec 3 08:31:15.179 imported 4 objects
4,还原csv文件
# mongoimport -d tank -c users --type csv --headerline --file tank/users.csv
connected to: 127.0.0.1
Tue Dec 3 08:37:21.961 imported 4 objects