如何在运行的KDB服务器中评估Q脚本?
我有一个大表,我想在kdb+服务器中加载它。分区代码在一个Q脚本中,我需要在服务器上对其进行评估,但我没有对其进行I/O控制(服务器在后台运行,内存中的数据是通过C API加载的) 到目前为止,我找到的唯一解决方案是打开一个句柄,并将所有语句转换为字符串(我必须使用的所有语句看起来都很混乱):如何在运行的KDB服务器中评估Q脚本?,kdb,Kdb,我有一个大表,我想在kdb+服务器中加载它。分区代码在一个Q脚本中,我需要在服务器上对其进行评估,但我没有对其进行I/O控制(服务器在后台运行,内存中的数据是通过C API加载的) 到目前为止,我找到的唯一解决方案是打开一个句柄,并将所有语句转换为字符串(我必须使用的所有语句看起来都很混乱): if[4 count.z.x;0N!”用法:part_md.q主机端口db_dir日期(YYYY.MM.DD)”;退出[1]] arg_主机:.z.x 0 arg_端口:.z.x 1 arg_db_目录:
if[4 count.z.x;0N!”用法:part_md.q主机端口db_dir日期(YYYY.MM.DD)”;退出[1]]
arg_主机:.z.x 0
arg_端口:.z.x 1
arg_db_目录:.z.x 2
参数日期:“D”$(.z.x 3)
/获取服务器句柄
h:hopen`$(“:”,arg\u主机“:”,arg\u端口)
设置\u db:“db:\”:“,arg\u db\u dir,”/mydb/\“”
设置sym路径:“sym路径:\:”,arg\u db\u dir“
h集_db
h设置sym路径
/选择要分区的字段
h“mydb_选择:从mydb中选择[-10]A、B、C”
/列举符号
h“md_select_enum:.Q.en[`$sym_path]md_select”
h“删除md_从“”中选择”
...
如何在不使用同一台机器上的服务器句柄的情况下直接评估脚本?您可以使用类似qStudio的kdb IDE,通过输入命令发送查询,就像在控制台上一样 其他几点建议:
sv
函数的许多变体,特别是(`sv`:file,`name)
它允许以独立于平台的方式快速形成文件路径Ryan另一个选项是studioForKdb+,尽管它没有qstudio提供那么多的功能我使用q-lab进行交互式查询。我将看一看qstudio。对于这个特定的问题,这是一个每天都在运行的任务来划分我的数据库。选项1)听起来是最好的方法。
if[4 <> count .z.x; 0N!"usage: part_md.q host port db_dir date (YYYY.MM.DD)"; exit[1]]
arg_host: .z.x 0
arg_port: .z.x 1
arg_db_dir: .z.x 2
arg_date: "D"$(.z.x 3)
/get server handle
h:hopen `$(":",arg_host,":",arg_port)
set_db: "db: \":",arg_db_dir, "/mydb/\""
set_sym_path: "sym_path: \":",arg_db_dir,"\""
h set_db
h set_sym_path
/select fields to partition
h "mydb_select: select [-10] A,B,C from mydb"
/enumerate symbols
h "md_select_enum: .Q.en[`$sym_path] md_select"
h "delete md_select from `."
...