2016-08-11 6 views
0

私はすべてのgroovyファイル内でmongorestoreコマンドを実行できますか?

sql.execute(
     alter database dbName 
     set offline with rollback immediate 
     drop database dbName 
     ) 


sql.execute(
    RESTORE DATABASE dbName 
    FROM disk = 'C:\Backups' 
    WITH REPLACE 
) 

、私はすべての必要なパラメータを渡すと、以下のようsql.execute()を走っデシベルをドロップし、既存のバックアップ(SQL)からデシベルを復元グルーヴィースクリプト

Sql sql = Sql.newInstance(dbSQLUrl, userName, password) 

を持っています上記のコードは完全に正常に動作します。私はこれもMongoDBのために実装する必要があります。 GroovyファイルでmongorestoreのようなMongoコマンドを実行できるMongoにsql.execute()と同等のものがありますか? Mongoのために

私は次のコードを持っている:

List credentials = [] 
List servers = [] 

credentials.push(MongoCredential.createCredential(mongoUserName, mongoDBName, mongoPassword as char[])) 
servers.push(new ServerAddress(mongoHost, mongoPort)) 

GMongoClient mongoClient = new GMongoClient(servers,credentials) 
DB mongoDB = mongoClient.getDB(mongoDBName) 
mongoDB.dropDatabase() 

は、今私は mongorestore ~/backups/first_backup/

、私のGroovyのファイル内に含ま/次のコマンドを実行する必要があることは、私はこれを達成することができる任意の方法はありますか?

答えて

0

ない、これはあなたが必要なものを行うための最も効率的な方法ですが、そのコマンドを呼び出すと、それはあなたのコードにこれを追加することによって終了するのを待つことができますを確認します。

String command = "mongorestore ${System.properties['user.home']}/backups/first_backup" 
Process p = command.execute() 
p.waitFor() 
+0

以下のコードがあります。String command = "" "mongorestore $ dbBackUpPath" ""プロセスp = command.execute()、basckup dbは作成されませんが、mongorestore/home/backups/testというコマンドラインで以下のコードを実行するとうまく動作します。私はテストDBが復活しているのを見ます。 – Sharath

+0

'p.waitFor()'を追加しましたか?そのコマンドが完了するのを待つ何らかの方法が必要です。デバッグするには、 'p = command.execute()'の後に 'println p.in.text + p.err.text'を追加して、' mongorestore'が何を出力しているのかを見てください。 –

+1

私はパスが誤って/ home/backups/testの代わりに\ home \ backsups \ testをパスしていませんでした。今はうまくいく。 – Sharath

0

要するに、これはMongoDBドライバでは実現できません。これらのコマンドは、コマンドライン(すなわち、MongoDBシェル)からのみ呼び出すことができます。日付をCSV形式でエクスポートし、データをMongoDBにプログラムでインポートする必要があります。これは非常に遅いでしょう。

それ以外の場合は、Groovyライブラリを使用してコマンドを実行する必要があります。以下のJavaコマンドと同様です。

Runtime.getRuntime()。exec( "mongoimport -d -h <> ..");

Similar question for Java Driver

+0

ときI私のスクリプトから上記の行を実行すると、 "プロセスは終了コード0で終了しました"と表示されますが、コマンドライン "mongorestore/home/backups/test"から次のコマンドを実行すると、私はdbが回復しているのを見ます。 – Sharath

+0

私はRuntime.getRuntime()を書きました。exec( "" "mongorestore $ dbBackUpPath" "") – Sharath

+0

mongorestoreの完全な絶対パスで試しましたか? – notionquest

関連する問題