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

时间:2015-07-01 07:05:58

标签: mongodb csv mongoexport

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

我有一个名为" test"的数据库,以及一个名为" people"的集合。人物收藏的内容是(json export works!):

{"_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
"","",""
"","",""
"","",""
"","",""

有人可以向我解释我做错了吗?

2 个答案:

答案 0 :(得分:1)

这里缺少的是--fieldFile选项不是“映射”,而只是您要从集合中导出的所有字段的“列表”。

因此,为了实际“匹配”您的收藏中存在的字段,内容应为:

_id
name
position

由于您所拥有的名称与任何字段都不匹配,因此您指定的字段数为空行字段输出四行(每个文档一行)。

mongoexport实用程序本身不会“映射”到备用名称。如果您想要将它们存储在集合中的名称不同,那么您必须自己更改输出。

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

答案 1 :(得分:1)

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

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

根据documentation

  

1)fieldFile允许您指定要包含在导出中的字段。

     

2)文件每行必须只有一个字段,并且行必须以LF字符(0x0A)结尾。

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