我可以在 groovy 文件中使用 运行 mongorestore 命令吗?

Can I run mongorestore command inside a groovy file?

我有一个 groovy 脚本,它删除数据库并从现有备份中恢复数据库 (SQL)

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

我传递了所有必需的参数和 运行 sql.execute(),如下所示,

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


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

以上所有代码都可以正常工作。我也需要为 MongoDB 实现这个。在 Mongo 中是否有等效于 sql.execute() 的地方,我可以在其中 运行 Mongo 命令,例如 groovy 文件中的 mongorestore

对于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()

现在我需要在 groovy 文件中 run/include 以下命令, mongorestore ~/backups/first_backup/

有什么方法可以实现吗?

简而言之,使用 MongoDB 驱动程序无法实现这一点。这些命令只能从命令行调用(即 MongoDB shell)。您可能需要将日期导出为 CSV 并以编程方式将数据导入 MongoDB,这会非常慢。

否则,您可能需要使用 Groovy 库执行命令。类似于下面的 Java 命令。

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

不确定这是执行所需操作的最有效方法,但您可以调用该命令并等待它完成,方法是将其添加到您的代码中:

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