可使用如下脚本实现批量备份。
backupDir="E:/Tools/DB_backup" def batchBackup(backupDir){ for(db in getDFSDatabases()){ tableList = getTables(database(db)); for(table in tableList){ backup(backupDir, <select * from loadTable(db,table)>,true); } } } batchBackup(backupDir);
完整验证脚本如下
login(`admin,`123456) backupDir="E:/Tools/DB_backup" n = 10 t1 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000.0,n) as price) t2 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000,n) as qty) db1 = database("dfs://db1", VALUE, 2012.12.01..2012.12.10) trades1 = db1.createPartitionedTable(t1, `trades1, `date).append!(t1) trades2 = db1.createPartitionedTable(t2, `trades2, `date).append!(t2) n = 10 t1 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000.0,n) as price) t2 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000,n) as qty) db1 = database("dfs://db2", VALUE, `AAPL`IBM`GOOG`MSFT) quotes1 = db1.createPartitionedTable(t1, `quotes1, `sym).append!(t1) quotes2 = db1.createPartitionedTable(t2, `quotes2, `sym).append!(t2) // 逐一备份 backup(backupDir, <select * from trades1>, true) backup(backupDir, <select * from trades2>, true) backup(backupDir, <select * from quotes1>, true) backup(backupDir, <select * from quotes2>, true) dropDatabase("dfs://db1") dropDatabase("dfs://db2") select * from loadTable("dfs://db1",`trades1); // 批量还原 migrate(backupDir); backupDir="E:/Tools/DB_backup" def batchBackup(backupDir){ for(db in getDFSDatabases()){ tableList = getTables(database(db)); for(table in tableList){ backup(backupDir, <select * from loadTable(db,table)>,false); } } } // 批量备份 batchBackup(backupDir); select * from loadTable("dfs://db1",`trades1);