【问题标题】:creating a shell script to automate csv export in mongo db创建一个 shell 脚本以在 mongodb 中自动导出 csv
【发布时间】:2011-09-23 09:36:49
【问题描述】:

我们有 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

然后遍历检索到的集合名称并在导出工具命令中替换它。

【问题讨论】:

    标签: shell ubuntu csv mongodb


    【解决方案1】:

    这可以通过 shell 轻松完成 - 不知道上面的 cmets 是否指的是 mongo shell 的旧版本...... 示例:

    echo 'show collections' | mongo dbname --quiet
    

    【讨论】:

      【解决方案2】:
      #############################################################
      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
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我做了类似的事情。我制作了一个 .js 文件来获取所有集合并制作了一个 shell 脚本来捕获其输出并生成导出命令
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-23
        • 2021-12-21
        • 1970-01-01
        • 1970-01-01
        • 2020-12-07
        相关资源
        最近更新 更多