restore
语法
restore(backupDir, dbPath, tableName, partition, [force=false], [outputTable])
参数
backupDir 是字符串,表示存放备份数据的目录。
dbPath 是字符串,表示已备份的分布式数据库的路径。
tableName 是字符串,表示已备份的表的名称。
partition 是字符串,表示要恢复的分区的相对路径。分区路径可以包含通配符("%"和"?"), "?"表示单个字符,"%"表示0,1或多个字符。
若仅备份某个分区,输入分区的相对路径或者"%/"+”分区名称”。举例:要恢复"dfs://compoDB"下的分区”20170810/50_100”,输入"/compoDB/20170807/0_50"或者"%/20170807/0_50"。
请注意:若使用 1.30.16/2.00.4 ~ 1.30.18/2.00.6 版本 server,对表级分区数据进行备份和恢复时,该参数必须指定路径到物理索引(可通过函数 listTables 获取),例如分区 "/compoDB/20170807/0_50" 下表的物理索引为8,则 partition 需指定为 "/compoDB/20170807/0_50/8"。
若需要备份所有分区,直接输入"%"。
force 是布尔值,表示是否强制恢复。默认值为false,表示只有元数据与备份数据元数据不一致的分区,才会恢复。
outputTable 是分布式表,该表的结构必须与要恢复的表结构一致。如果没有指定outputTable,恢复后的数据会存放到原表;如果指定了outputTable,恢复后的数据会存放到该表中,而原数据表保持不变。
详情
恢复指定分区的数据。返回一个字符串向量,包含恢复的分区的路径。
例子
创建一个组合分区的数据库dfs://compoDB:
$ n=1000000
$ ID=rand(100, n)
$ dates=2017.08.07..2017.08.11
$ date=rand(dates, n)
$ x=rand(10.0, n)
$ t=table(ID, date, x);
$ dbDate = database(, VALUE, 2017.08.07..2017.08.11)
$ dbID=database(, RANGE, 0 50 100);
$ db = database("dfs://compoDB", COMPO, [dbDate, dbID]);
$ pt = db.createPartitionedTable(t, `pt, `date`ID)
$ pt.append!(t);
备份表pt的所有数据:
$ backup("/home/DolphinDB/backup",<select * from loadTable("dfs://compoDB","pt")>,true);
10
例1. 恢复所有数据到原表。
$ restore("/home/DolphinDB/backup","dfs://compoDB","pt","%",true);
["dfs://compoDB/20170807/0_50/6F","dfs://compoDB/20170807/50_100/6F","dfs://compoDB/20170808/0_50/6F","dfs://compoDB/20170808/50_100/6F","dfs://compoDB/20170809/0_50/6F","dfs://compoDB/20170809/50_100/6F","dfs://compoDB/20170810/0_50/6F","dfs://compoDB/20170810/50_100/6F","dfs://compoDB/20170811/0_50/6F","dfs://compoDB/20170811/50_100/6F"]
例2. 恢复日期为2017.08.10的数据。
$ restore("/home/DolphinDB/backup","dfs://compoDB","pt","%20170810%",true)
["dfs://compoDB/20170810/0_50/6F","dfs://compoDB/20170810/50_100/6F"]
例3. 在数据库dfs://compoDB中创建一个与表pt结构相同的表temp,把pt的数据恢复到表temp。
$ temp=db.createPartitionedTable(t, `pt, `date`ID);
$ restore("/home/DolphinDB/backup","dfs://compoDB","pt","%",true,temp);
["dfs://compoDB/20170807/0_50/6F","dfs://compoDB/20170807/50_100/6F","dfs://compoDB/20170808/0_50/6F","dfs://compoDB/20170808/50_100/6F","dfs://compoDB/20170809/0_50/6F","dfs://compoDB/20170809/50_100/6F","dfs://compoDB/20170810/0_50/6F","dfs://compoDB/20170810/50_100/6F","dfs://compoDB/20170811/0_50/6F","dfs://compoDB/20170811/50_100/6F"]
$ select count(*) from temp;
count |
---|
1000000 |