有没有一种简单的方法可以保存所有的表、变量和函数,然后将它们重新加载到另一个kdb+实例中?例如,假设我的机器设置为每周重新启动,但我希望重新加载在重新启动之前kdb+会话中的所有内容。
谢谢。
发布于 2016-07-22 22:09:01
如果您想要一些开箱即用的东西来维护变量状态(表/字典/列表/原子),那么可以看看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致以敬意,
康纳
发布于 2016-07-22 21:50:36
使用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
https://stackoverflow.com/questions/38526522
复制相似问题