我有一个大表,我想在 kdb+ 服务器中进行分区。分区代码位于我需要在服务器上评估的 Q 脚本中,但我没有对其进行 I/O 控制(服务器在后台运行,内存中的数据是通过 C API 加载的)。
到目前为止,我发现的唯一解决方案是打开一个句柄并将我的所有语句转换为字符串(所有那些我必须使用的 \" 看起来很乱):
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 `."
...
如何在不使用同一台机器上的服务器句柄的情况下直接评估我的脚本?