admin

按时间范围删除数据存储区中的行

sql

我有一个CKAN数据存储,其中有一列名为timestamp的“ recvTime”(即,在datastore_create时使用“
timestamp”作为类型,如此链接所示)。该列的示例值为“
2014-06-12T16:08:39.542000”。

我在数据存储区中有大量记录(数千个),我想删除“ recvTime”中给定日期之前的行。我的第一个想法是使用REST
API以及使用范围过滤器的datastore_delete操作来完成此操作

请问还有其他解决方法吗?

鉴于我可以访问运行CKAN服务器的主机,因此我想知道是否可以在持久化数据存储区的Postgresql引擎上执行常规SQL语句来实现这一点。但是,我还没有在CKAN文档中找到有关操纵CKAN底层数据模型的信息,所以不知道这是一个好主意还是有风险…

任何解决方法或信息指针都非常受欢迎。谢谢!


阅读 121

收藏
2021-06-07

共1个答案

admin

如果您愿意在底层数据库中进行挖掘,则可以肯定直接在底层数据库上执行此操作(该结构非常简单,使用以相应资源ID命名的表)。您甚至可以使用扩展名将其转换为自己的API(尽管您要注意权限)。

您可能还对通过扩展中的插件扩展DataStore API的新支持(仅适用于主atm)感兴趣-
请参阅https://github.com/ckan/ckan/pull/1725

2021-06-07