9.3. 导入导出

mongoimport 和 mongoexport 并不能可靠地保存所有的富文本 BSON 数据类型,因为 JSON 仅能代表一种 BSON 支持的子集类型。因此,数据用这些工具导出导入或许会丢失一些精确程度。

导入操作

在 MongoDB 中,使用 mongoimport 来导入数据。 默认情况下,mongoimport 会将数据导入到本地主机端口 27017 上的 MongoDB 实例中。要将数据导入在其他主机或端口上运行的 MongoDB 实例中,请通过包含 --host--port 选项来指定主机名或端口。 使用 --drop 选项删除集合(如果已经存在)。 这样可以确保该集合仅包含您要导入的数据。

语法格式:

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名

【示例】导入表数据

$ mongoimport -h 127.0.0.1 --port 27017 -d test -c book --drop test/book.dat
2020-09-11T10:53:56.359+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T10:53:56.372+0800    dropping: test.book
2020-09-11T10:53:56.628+0800    431 document(s) imported successfully. 0 document(s) failed to import.

【示例】从 JSON 文件中导入表数据

$ mongoimport -h 127.0.0.1 --port 27017 -d test -c student --upsert test/student.json
2020-09-11T11:02:55.907+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T11:02:56.068+0800    200 document(s) imported successfully. 0 document(s) failed to import.

【示例】从 CSV 文件中导入表数据

$ mongoimport -h 127.0.0.1 --port 27017 -d test -c product --type csv --headerline test/product.csv
2020-09-11T11:07:49.788+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T11:07:51.051+0800    11 document(s) imported successfully. 0 document(s) failed to import.

【示例】导入部分表字段数据

$ mongoimport -h 127.0.0.1 --port 27017 -d test -c product --type json --upsertFields name,price test/product.json
2020-09-11T11:14:05.410+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T11:14:05.612+0800    11 document(s) imported successfully. 0 document(s) failed to import.

导出操作

语法格式:

mongoexport -h <IP> --port <端口> -u <用户名> -p <密码> -d <数据库> -c <表名> -f <字段> -q <条件导出> --csv -o <文件名>
  • -f:导出指字段,以逗号分割,-f name,email,age 导出 name,email,age 这三个字段
  • -q:可以根查询条件导出,-q '{ "uid" : "100" }' 导出 uid 为 100 的数据
  • --csv:表示导出的文件格式为 CSV 的,这个比较有用,因为大部分的关系型数据库都是支持 CSV,在这里有共同点

【示例】导出整张表

$ mongoexport -h 127.0.0.1 --port 27017 -d test -c product -o test/product.dat
2020-09-11T10:44:23.161+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T10:44:23.177+0800    exported 11 records

【示例】导出表到 JSON 文件

$ mongoexport -h 127.0.0.1 --port 27017 -d test -c product --type json -o test/product.json
2020-09-11T10:49:52.735+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T10:49:52.750+0800    exported 11 records

【示例】导出表中部分字段到 CSV 文件

$ mongoexport -h 127.0.0.1 --port 27017 -d test -c product --type csv -f name,price -o test/product.csv
2020-09-11T10:47:33.160+0800    connected to: mongodb://127.0.0.1:27017/
2020-09-11T10:47:33.176+0800    exported 11 records