2011-06-27 8 views
3

私たちはmongo dbを持っており、mongoexportツールを使ってcsvにエクスポートしたいコレクションのリストを持っています。私はこれを頻繁に行う必要があり、コレクションの名前は時々変更されます。ですから、私がやってみたいのは、実行できるシェルスクリプトを作成することです。それはmongo dbのコレクションを繰り返して、csvファイルを作成します。今私はスクリプトを持っていますが、例えば自動化されていない私はスクリプトで次のようなことがあります。mongo dbのcsvエクスポートを自動化するためのシェルスクリプトを作成します

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

このすべての要素は、csv filenameと両方が同じであるコレクション名以外は同じです。

は、だから私は、コレクション名を超える

show collections 

、ループを取得するスクリプトを作成してエクスポートツールのコマンドでそれを交換したいです。

答えて

2

シェルからmongoを通じて「コレクションを表示」することはできません。 好きな言語の を使って小さなスクリプト/プログラムを書いて、ドライバのAPIからコレクション名を取り出し、システムコール(system())を使ってスクリプト/プログラムを通して mongoexportを実行することをお勧めします。

+1

私は似た何かをしました。 .jsファイルを作成してすべてのコレクションを取得し、その出力をキャッチしてエクスポートコマンドを生成するシェルスクリプトを作成しました – swordfish

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 
4

これは、簡単にシェルを介して行うことができます - 上記のコメントは、モンゴシェルの古いバージョンを参照するかどうかを知りません... 例:

echo 'show collections' | mongo dbname --quiet 
関連する問題