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

时间:2014-06-18 14:52:20

标签: sql postgresql ckan

我有一个CKAN数据存储区,其中一列名为" recvTime"类型为timestamp(即使用" timestamp"作为datastore_create时的类型,as shown in this link)。此列的示例值为" 2014-06-12T16:08:39.542000"。

我在数据存储区中有大量记录(数千),我想在" recvTime"中的给定日期之前删除行。我的第一个想法是使用REST API和使用范围过滤器的datastore_delete操作来完成它,但不能像in the following Q&A所描述的那样。

还有其他方法可以解决这个问题吗?

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

非常欢迎任何变通方法或信息指针。谢谢!

1 个答案:

答案 0 :(得分:1)

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

您可能也对通过扩展插件扩展DataStore API的新支持(仅限master)感兴趣 - 请参阅https://github.com/ckan/ckan/pull/1725