如何删除符合搜索条件的表格?

时间:2017-08-14 07:31:27

标签: kdb q-lang

我知道我可以使用

删除表格
delete some_table_name from `.

但是假设我有大量的表,并希望删除所有表格,例如,以prefix_开头并以_suffix结尾。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用delete的功能形式(请参阅here):

/ create some tables 
q)`a_one`a_two`b_one`b_two set\:([] x:til 10)
    `a_one`a_two`b_one`b_two
q)tables[]
    `s#`a_one`a_two`b_one`b_two

/ find table names matching "a_*" and delete them from root namespace
q)![`.;();0b;{x where x like "a_*"} tables[]]
    `.
q)tables[]
    `s#`b_one`b_two

答案 1 :(得分:1)

如果您经常需要此功能,我建议您按如下方式定义drop功能:

q)drop:![`.;();0b;](),

此函数将一个或多个表名作为符号并删除它们。结合选择器功能,它可用于按模式删除

q)drop{x where x like"prefix_*_suffix"}tables[]

您还可以定义drop_matching功能

q)drop_matching:drop{a where(a:tables[])like x}@

将一举完成这项工作:

q)drop_matching"prefix_*_suffix"