如何删除一个kdb分区表的内容



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

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

假设您按日期进行分区,因此目录结构为:

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

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

还可以将删除过程合并到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

最新更新