如何删除符合搜索条件的表?
How do I delete tables matching a search criterion?
我知道我可以使用
删除表格
delete some_table_name from `.
但是假设我有大量表,并且想删除所有以 prefix_
开头并以 _suffix
结尾的表。
我该怎么做?
您可以使用 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
如果你经常需要这个功能,我建议你定义一个drop
函数如下:
q)drop:![`.;();0b;](),
此函数会将一个或多个table个名称作为符号并删除它们。结合选择器功能,可用于按模式删除
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"
我知道我可以使用
删除表格delete some_table_name from `.
但是假设我有大量表,并且想删除所有以 prefix_
开头并以 _suffix
结尾的表。
我该怎么做?
您可以使用 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
如果你经常需要这个功能,我建议你定义一个drop
函数如下:
q)drop:![`.;();0b;](),
此函数会将一个或多个table个名称作为符号并删除它们。结合选择器功能,可用于按模式删除
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"