有沒有簡單的方法來保存所有表,變量和函數,然後將它們重新加載到另一個kdb +實例中?例如,假設我的機器設置爲每週重新啓動,但是我想在重新啓動之前重新加載在我的kdb +會話中的所有內容。保存KDB +實例的所有表,變量和函數,然後重新加載
謝謝。
有沒有簡單的方法來保存所有表,變量和函數,然後將它們重新加載到另一個kdb +實例中?例如,假設我的機器設置爲每週重新啓動,但是我想在重新啓動之前重新加載在我的kdb +會話中的所有內容。保存KDB +實例的所有表,變量和函數,然後重新加載
謝謝。
使用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
如果你想要的東西開箱維持可變狀態(表/類型的字典/列表/原子),然後看看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
問候,
康納
如果我有多個工作區.. – shivam
這樣,如果你想保存多個命名空間的工作。 http://stackoverflow.com/a/38528576/2039505 –