Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建shell脚本以在mongo db中自动导出csv_Shell_Ubuntu_Csv_Mongodb - Fatal编程技术网

创建shell脚本以在mongo db中自动导出csv

创建shell脚本以在mongo db中自动导出csv,shell,ubuntu,csv,mongodb,Shell,Ubuntu,Csv,Mongodb,我们有mongo db,其中有一个集合列表,我想使用mongoexport工具将其导出到csv。我需要经常这样做,而且收藏的名称有时会改变。所以我想做的是创建一个shell脚本,我可以运行它,它将迭代mongo db中的集合并创建csv文件。现在我有一个脚本,但它不是自动的,例如,我有一个脚本中的以下内容 mongoexport -d mydbname -c mycollname.asdno3rnknlasfkn.collection --csv -f field1,field2,field3

我们有mongo db,其中有一个集合列表,我想使用mongoexport工具将其导出到csv。我需要经常这样做,而且收藏的名称有时会改变。所以我想做的是创建一个shell脚本,我可以运行它,它将迭代mongo db中的集合并创建csv文件。现在我有一个脚本,但它不是自动的,例如,我有一个脚本中的以下内容

 mongoexport -d mydbname -c mycollname.asdno3rnknlasfkn.collection --csv -f field1,field2,field3,field4 -o mycollname.asdno3rnknlasfkn.collection.csv
在此情况下,除csv文件名和集合名称相同外,所有元素都将保持相同

所以我想创建一个脚本

 show collections
然后循环检索到的集合名称,并在导出工具命令中替换它。

您不能通过mongo从shell调用“show collections”。 我建议你用你最喜欢的语言写一个小SKcript/程序 通过驱动程序的API获取集合名称,然后执行 mongoexport使用系统调用(system())通过脚本/程序进行导出。

#############################################################
脚本1——在MongoDB服务器中生成数据库列表
#############################################################
#!/bin/bash
####################################################################
#节目:mongolistdbs.sh
#
#程序员:编辑
#用途:创建用于在Mongo中列出数据库的程序
#               
#创建日期:2011年2月14日
#
#修改:
###################################################################
#集合x
#提供mongo连接参数:服务器和端口

MongoLocalHost:12345——quiet这可以通过shell轻松完成-不知道上面的注释是否引用了Mongoshell的旧版本。。。 例如:


我也做了类似的事情。我制作了一个.js文件来获取所有集合,并制作了一个shell脚本来捕获其输出并生成导出命令
#############################################################
Script 1 -- to produce a list of databases in MongoDB server
#############################################################

#!/bin/bash
####################################################################
# PROGRAM:      mongolistdbs.sh
#
# PROGRAMMER:   REDACTED
# PURPOSE:      Program created to list databases in Mongo
#               
# CREATED:      02/14/2011
#
# MODIFCATIONS:
###################################################################
#set -x
#supply mongo connection parms: server and port 
mongo localhost:12345 --quiet <<!!  2>&1
show dbs
!!


########################################################
Script 2 -- This is the driver that calls script 1
#########################################################
####################################################################
# PROGRAM:      mongodb_backup_driver.sh
#
# PROGRAMMER:   REDACTED
# PURPOSE:      Program created to drive the MongoDB full database
#               backups
# CREATED:      02/14/2011
#
# MODIFCATIONS:
###################################################################

#!/bin/bash


        ################################################
        # backup strategy is individual backup
        # of all databases via loop and db list
        # (dbparm is empty string)
        ###############################################
        echo "Strategy: All via Individual Loop"

        ####################################
        ### here is the call of script 1
        ####################################
        DBs=`./mongolistdbs.sh | cut -f1 | egrep -v ">"`
        for db in $DBs;
        do
                echo  "Driver loop for backup of [ ${db} ]"
                #############################################################
                ### here im calling my backup script (not supplied) 
                ### with database as a parameter within a loop
                ### to backup all databases individually
                #############################################################  
                ./royall_mongodb_backup.sh ${db}
        done
echo 'show collections' | mongo dbname --quiet