Создание сценария оболочки для автоматизации экспорта CSV в Монго БД - PullRequest
3 голосов
/ 27 июня 2011

У нас есть mongo db и у нас есть список коллекций, которые я хочу экспортировать в csv с помощью инструмента mongoexport. Мне нужно делать это часто, а названия коллекций иногда меняются. Поэтому я хочу создать сценарий оболочки, который я могу просто запустить, и он будет перебирать коллекции в dong Монго и создавать CSV-файлы. Сейчас у меня есть сценарий, но он не автоматизирован, например, у меня есть следующее в сценарии.

 mongoexport -d mydbname -c mycollname.asdno3rnknlasfkn.collection --csv -f field1,field2,field3,field4 -o mycollname.asdno3rnknlasfkn.collection.csv

При этом все элементы останутся одинаковыми, кроме имени файла csv и имени коллекции, где оба одинаковы.

Итак, я хочу создать скрипт, который будет

 show collections

затем зациклите полученные имена коллекций и замените их в команде инструмента экспорта.

Ответы [ 3 ]

4 голосов
/ 18 сентября 2012

Это легко сделать с помощью оболочки - не знаю, ссылаются ли приведенные выше комментарии на старые версии оболочки mongo ... Пример:

echo 'show collections' | mongo dbname --quiet
2 голосов
/ 09 июля 2011
#############################################################
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
2 голосов
/ 27 июня 2011

Нельзя вызывать «показ коллекции» через монго из оболочки. Я предлагаю вам написать небольшой скрипт / программу на вашем любимом языке извлечение имен коллекции через API драйвера, а затем выполнить Монгоэкспорт через ваш скрипт / программу с помощью системного вызова (system ()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...