按天备份的数据,怎么恢复到按月分区的数据库

我的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,显示它是按月分区的,如下图:

attachments-2021-06-tmw4Rmpz60c81d5f04a80.png请问这种按月分区但按天备份的数据库,DolphinDB中有什么简单的方法恢复?



请先 登录 后评论

1 个回答

logger

可以先创建一张临时表,把数据恢复到临时表,然后再导入目标表。

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")
请先 登录 后评论