按天备份的数据,怎么恢复到按月分区的数据库
我的DolphinDB数据库备份文件是按天备份的,数据文件目录如下:
> tree ./ -L 3./
├── 20200601
│ └── STOCK_SZL2_TAQ
│ └── SZL2_TAQ
├── 20200602
│ └── STOCK_SZL2_TAQ
│ └── SZL2_TAQ
├── 20200603
│ └── STOCK_SZL2_TAQ
│ └── SZL2_TAQ
├── 20200604
│ └── STOCK_SZL2_TAQ
│ └── SZL2_TAQ
├── 20200605
│ └── STOCK_SZL2_TAQ
│ └── SZL2_TAQ
├── 20200608
│ └── STOCK_SZL2_TAQ
│ └── SZL2_TAQ
...
我用migrate建库建表以及恢复第一天数据:
migrate("/hdd/database/szl2data/20200601/","dfs://STOCK_SZL2_TAQ","SZL2_TAQ")
数据库dfs://STOCK_SZL2_TAQ和表SZL2_TAQ创建成功,并有了2020.06.05这一天的数据,我再用下面数据恢复2020.06.06的数据:
restore(path,"dfs://STOCK_SZL2_TAQ","SZL2_TAQ","%",true)
这时查看数据库,2020.06.06这一天的数据恢复了,但2020.06.05这一天的数据没有了。
查看dfs://STOCK_SZL2_TAQ数据库的schema,显示它是按月分区的,如下图:
请问这种按月分区但按天备份的数据库,DolphinDB中有什么简单的方法恢复?
回答
可以先创建一张临时表,把数据恢复到临时表,然后再导入目标表。
migrate("/hdd/database/szl2data/20200601/","dfs://STOCK_SZL2_TAQ","SZL2_TAQ")db=database("dfs://STOCK_SZL2_TAQ")
t=db.loadTable("SZL2_TAQ")
db.createPartitionedTable(t, `TAQ, `date`symbol);
temp=db.loadTable("TAQ")
day=2020.06.02
for(i in 2:31){
path="/hdd/database/szl2data/"+temporalFormat(day, "yyyyMMdd") + "/";
day=datetimeAdd(day,1,`d)
if(!exists(path)){continue;}
print "restoring " + path;
restore(path,"dfs://STOCK_SZL2_TAQ","SZL2_TAQ","%",true,temp);
t.append!(select * from temp)
}
dropTable(db,"TAQ")
以上是 按天备份的数据,怎么恢复到按月分区的数据库 的全部内容, 来源链接: utcz.com/a/35762.html