我有超过100个字段,我正在寻找一种方法,以便我可以将整个集合导出为CSV格式
命令行要求通过提供所有字段
-f [--fields] arg逗号分隔的字段名称列表,例如-f name,age
谢谢
fab*_*ert 13
在bash中,您可以创建此"export-all-collections-to-csv.sh"并将数据库名称作为唯一参数传递(随意将其减少为单个集合):
OIFS=$IFS;
IFS=",";
dbname=$1 #put "database name" here if you don't want to pass it as an argument
collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();" --quiet`;
collectionArray=($collections);
for ((i=0; i<${#collectionArray[@]}; ++i));
do
keys=`mongo $dbname --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`;
mongoexport --db $dbname --collection ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
done
IFS=$OIFS;
Run Code Online (Sandbox Code Playgroud)
您可以创建一个包含字段名称的文件(对您来说可能更容易):
--fieldFile arg file with fields names - 1 per line
Run Code Online (Sandbox Code Playgroud)
在您的情况下,它们可能都是相同的,但您必须指定字段名称的原因是因为每个文档的字段名称可能不同,但 csv 中的字段名称必须固定。
| 归档时间: |
|
| 查看次数: |
11927 次 |
| 最近记录: |