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

我的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

回到顶部