使用 mongoimport 将 CSV 文件导入 MongoDB

发布于

使用 MongoDB 时,您可以使用 将文档导入集合。 是从扩展 JSON、CSV 或 TSV 文件导入内容的命令行实用程序。导入文件可能由某个其他导出实用程序创建。mongoimport``mongoimport``mongoexport

本文提供了将CSV文件导入MongoDB的示例。

例

假设我们有以下名为 的 CSV 文件:pets.csv

_id,name,type 1,“Wag”,“Dog” 2,“Bark”,“Dog” 3,“Meow”,“Cat”

以下命令将CSV文件导入MongoDB:

mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv

在本例中,我没有指定要将其导入到的集合,$1()同名的集合。pets

检查结果

让我们来看看这个系列。

db.pets.find()

结果:

{ “_id” : 1, “name” : “Wag”, “type” : “Dog” } { “_id” : 2, “name” : “Bark”, “type” : “Dog” } { “_id” : 3, “name” : “Meow”, “type” : “Cat” }

我们可以看到文档是按预期导入的。

不带列标题的 CSV 文件

在前面的示例中,我们使用参数指定应将第一行用于字段名称。--headerline

如果您的 CSV 文件不包含标题行,则需要使用参数或参数来指定字段名称。--fields``--fieldFile

因此,假设我们的CSV文件没有列线,而是看起来像这样:

1,“Wag”,“Dog” 2,“Bark”,“Dog” 3,“Meow”,“Cat”

然后,我们可以使用以下命令导入文件:

mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv

其结果与上一个示例相同。

指定集合名称

可以使用 (或) 参数指定要将文件导入到的集合。--collection``-c

下面是使用该参数将同一文件导入其他集合的示例:--collection

mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv

如果集合尚不存在,则将创建该集合。如果它已存在,则导入结果将取决于您使用的模式(稍后会详细介绍)。

在我们的例子中,新创建的集合如下所示:

db.pets2.find()

结果:

{ “_id” : 2, “name” : “Bark”, “type” : “Dog” } { “_id” : 3, “name” : “Meow”, “type” : “Cat” } { “_id” : 1, “name” : “Wag”, “type” : “Dog” }

导入前删除集合

可以使用该参数删除与尝试创建/导入的集合同名的任何现有集合。--drop

假设我们有第二个文件,名为 ,其中包含以下文档:pets2.csv

_id,name,type,weight 4,“Bubbles”,“Fish”,3

如果我使用该选项将该文档导入集合,会发生什么情况:pets2``--drop

mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv

输出:

2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.

这告诉我们集合已被丢弃,并且导入了一个文档。

让我们来看看这个系列:

db.pets2.find()

结果:

{ “_id” : 4, “name” : “Bubbles”, “type” : “Fish”, “weight” : 3 }

正如预期的那样,我们的新文档是集合中唯一的文档。

导入模式

有多种导入模式可用于 。这些模式确定在集合中已存在您尝试导入到的匹配文档时会发生什么情况。mongoimport

模式如下:

模式 描述
insert 这是默认模式。此模式插入导入文件中的文档。如果集合中已存在匹配的文档,则会发生错误。匹配文档是与导入文件中的文档具有相同唯一 ID(如匹配字段)的文档。_id
upsert 将数据库中的现有文档替换为导入文件中的匹配文档。将插入所有其他文档。
merge 将导入文件中的文档匹配的现有文档与新文档合并。将插入所有其他文档。
delete 删除数据库中与导入文件中的文档匹配的现有文档。任何不匹配的文档都不起作用。

有关每种模式的示例,请参阅 mongoimport 的导入模式。

检查mongoimport

mongoimport是 MongoDB 数据库工具包的一部分。MongoDB数据库工具是一套用于使用MongoDB的命令行实用程序。

如果您不确定是否安装了MongoDB数据库工具/,请尝试在终端或命令提示符下运行以下命令进行检查:mongoimport

mongoimport --version

如果有,您应该会看到版本信息等。如果您没有它,您可以使用MongoDB网站上的安装说明将其安装到您的系统上。

在哪里运行命令?mongoimport

您需要从系统的命令行(例如,新的终端或命令提示符窗口)运行命令。mongoimport

不要从 shell 运行它们。mongo