我正在尝试将数据导出到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
"","",""
"","",""
"","",""
"","",""
有人可以向我解释我做错了吗?
答案 0 :(得分:1)
这里缺少的是--fieldFile
选项不是“映射”,而只是您要从集合中导出的所有字段的“列表”。
因此,为了实际“匹配”您的收藏中存在的字段,内容应为:
_id
name
position
由于您所拥有的名称与任何字段都不匹配,因此您指定的字段数为空行字段输出四行(每个文档一行)。
mongoexport
实用程序本身不会“映射”到备用名称。如果您想要将它们存储在集合中的名称不同,那么您必须自己更改输出。
输出也是如此,因为任何ObjectId
值都将作为该文字字符串输出。
答案 1 :(得分:1)
您可以使用以下命令导出csv文件中的数据:
mongoexport --db dbName --collection collectionName --type=csv --fields name,position --out fileName.csv
1)
fieldFile
允许您指定要包含在导出中的字段。2)文件每行必须只有一个字段,并且行必须以LF字符(0x0A)结尾。
您在文本文件中使用不同的名称(ID,名称,位置)作为集合中的名称(_id,名称,位置),因此您将导出空字段。