如何使用 mongoexport 将集合中的所有记录导出到 CSV 文件

How do I use mongoexport to export all records in a collection to a CSV file

我正在尝试将数据导出到 CSV 文件,但出于某种原因,我没有在 CSV 文件中获取任何数据。

我有一个名为 "test" 的数据库和一个名为 "people" 的集合。人物合集内容为(json导出作品!):

{"_id":{"$oid":"55937ce0c64ddad5023a9570"},"name":"Joe Bloggs","position":"CE"}
{"_id":{"$oid":"55937d57c64ddad5023a9571"},"name":"Jane Bloggs","position":"CE"}
{"_id":{"$oid":"55937d62c64ddad5023a9572"},"name":"Peter Smith","position":"CE"}
{"_id":{"$oid":"55937d78c64ddad5023a9573"},"name":"Sarah Smith","position":"STL"}

我正在尝试使用以下命令将此数据导出到 CSV 文件中:

mongoexport --type=csv -d test -c people --fieldFile c:\dev\peopleFields.txt --out c:\dev\people.csv

当我运行这个命令时,响应是:

2015-07-01T14:56:36.787+0800   connected to: localhost
2015-07-01T14:56:36.787+0800   exported 4 records

peopleFields.txt的内容是:

ID
Name
Position

people.csv 文件的结果输出是:

ID,Name,Position
"","",""
"","",""
"","",""
"","",""

有人可以向我解释一下我做错了什么吗?

您在这里缺少的是 --fieldFile 选项不是 "mapping",而只是您要从集合中导出的所有字段的 "list"。

所以实际上 "match" 字段出现在您的集合中,内容应该是:

_id
name
position

由于您的名称与任何字段都不匹配,您将得到四行(每个文档一行)空白字段输出,用于您指定的字段数。

mongoexport 实用程序本身不会 "map" 替代名称。如果你想要不同的名称来存储它们在你的集合中,那么你将不得不自己改变输出。

输出也是如此,因为任何 ObjectId 值都将作为该文字字符串输出。

您可以使用以下命令导出 csv 文件中的数据:

mongoexport --db dbName --collection collectionName  --type=csv --fields name,position --out fileName.csv

根据documentation,

1) The fieldFile allows you to specify fields to include in the export.

2) The file must have only one field per line, and the line(s) must end with the LF character (0x0A).

您在文本文件中使用的名称(ID、名称、位置)与在集合中使用的名称(_id、名称、位置)不同,因此导出的字段为空。