我有一个大表,我想在kdb +服务器中加载分区。分区代码在我需要在服务器上评估的Q脚本中,但是我没有对它进行I / O控制(服务器在后台运行,内存中的数据是通过C API加载的)。 / p>
到目前为止,我发现的唯一解决方案是打开一个句柄并将我的所有语句转换为字符串(所有这些“我必须使用看起来相当混乱):
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 `."
...
如何在不使用同一台计算机上的服务器句柄的情况下直接评估我的脚本?
答案 0 :(得分:2)
您可以像qStudio http://www.timestored.com/qstudio一样使用kdb IDE通过输入命令来发送查询,就像在控制台上一样。
其他一些建议:
阅读通信过程的功能形式,总是发送字符串的替代方法。更强大,因为它允许使用对象。
避免使用变量名中的下划线,因为它们也是kdb中的运算符。 (有关q语言指南,请参阅此处:http://www.timestored.com/kdb-guides/q-coding-standards)
查看sv
函数的多种变体,特别是(` sv `:file,`name)
,它允许以独立于平台的方式快速形成文件路径。
此致 莱恩
答案 1 :(得分:0)
另一个选项是studioForKdb +虽然它没有提供与qstudio http://code.kx.com/wiki/StudioForKdb%2B
一样多的功能