0 kdb
你不能直接从分区数据库中删除数据行,所以我看到的方法是:
使用日期的 where 子句将表加载到内存中
从内存中的表中删除行
将表重新保存到磁盘,覆盖旧数据
但这假设该分区可以加载到内存中。如果做不到,那我能做什么呢?
我查看了 dbmaint.q 脚本,但似乎没有修改行的解决方案,只有列。
最好的选择是加载特定的列,您将在该列上确定要删除的行,并找到要保留的行的索引。然后迭代每列并根据这些索引删除每列中的条目。就像是:
/equivalent to delete from myTab where date=2022.01.02, myCol=`xx
keep_idx:where not`xx=get`:2022.01.02/myTab/myCol;
/iterate through each col, remove/index and write back down
{c set @[;keep_idx]get c:` sv`:2022.01.02/myTab,x}each get`:2022.01.02/myTab/.d
Run Code Online (Sandbox Code Playgroud)
但是,您需要处理一些注意事项: