保存KDB +实例的所有表,变量和函数,然后重新加载

时间:2016-07-22 12:32:22

标签: kdb q-lang

是否有一种简单的方法可以保存所有表,变量和函数,然后将它们重新加载到另一个kdb +实例中?例如,假设我的机器设置为每周重新启动,但我想在重新启动之前重新加载我的kdb +会话中的所有内容。

感谢。

2 个答案:

答案 0 :(得分:2)

如果你想要开箱即可维护变量状态(tables / dicts / lists / atom),那么看一下http://code.kx.com/q/cookbook/logging/

/cmdline startup
q db_main -l -p 8090

/To store state before the restart, modify .z.exit to flush to the qdb file 
.z.exit:{value"\\l"}

但这并不包括功能,但理想情况下这些功能不应该改变。

如果您确实需要保存这些,可以查看将所有命名空间保存到磁盘。

.z.exit:{`:/tmp/ns set get each {x!x}`$".",/:string key`}

/on startup
{{y set x[y]}[x;]each key x} `.q`.Q _ get `:/tmp/ns

此致

康纳

答案 1 :(得分:1)

使用set / get将状态保存到文件。这仅限于小型工作空间。

>q
KDB+ 3.4 2016.06.14 Copyright (C) 1993-2016 Kx Systems

q)a:1
q)t:([] b:til 100)
q)s:select from t where b<5
q)`:session.bin set get `.
`:session.bin
q)\\

>q
KDB+ 3.4 2016.06.14 Copyright (C) 1993-2016 Kx Systems

q)`. set get `:session.bin
`.
q)a
1
q)s
b
-
0
1
2
3
4

记录和快照是另一种选择: http://www.timestored.com/kdb-guides/kdb-command-line-options#kdb-logging-replication