如何删除kdb分区表的内容?

时间:2013-04-18 20:08:08

标签: kdb

我编写了一个q脚本来创建一个分区表,并从我之前保存的大型kdb文件中插入行。该脚本仅保存我从命令行传入的特定日期的数据。

如何在脚本开头清除分区表的内容?或者更一般地说,如果我多次运行脚本,如何保证表内容不重复?

2 个答案:

答案 0 :(得分:3)

假设你按日期划分,所以目录结构:

2012.04.03
          /trade
2012.04.04
          /trade
2012.04.05
          /trade
                /ticker
                /price
                /size
  1. 要清除一个日期的内容,只需删除该文件夹,然后删除\l

  2. 为了防止重复检查该日期是否存在任何数据:

    select count i from trade where date=2012.04.06

  3. 如果一个日期数据可能来自不同的文件,这使得它更棘手。您可能希望添加sourceFile列和/或作为单独的表来跟踪加载的文件。

答案 1 :(得分:1)

您还可以将删除过程合并到q函数中。 假设您所写的位置采用以下格式:

/hdb/date/tablename/colname

q) db1:"/hdb/date";    / you can pass this as a argument in a function

q) deletedb:{[dbname] systemcmd: "rm -rfv ",dbdelete; system systemcmd}

q) deletedb db1