我运行了多个查询,但是在保存它们之前,qpad
崩溃了。但是,运行这些查询的q-port
(在Windows计算机上)仍处于打开状态。我可以分别通过\v
和\f
恢复变量和函数。
是否有办法恢复我使用q statements
运行的所有qpad
?我忘记维护日志文件,因此我试图找到一种使用q-port
恢复查询的方法。
谢谢
答案 0 :(得分:5)
很遗憾,由于Davis.Leong的原因,无法检索您的旧查询。但是,如果您不能/不想在服务器上创建表来保存它们,则还可以在QPad设置中选中日志查询框:
Q>设置>编辑器>将查询记录到“ queries_date.log”
现在,当您运行查询时,会将它们与服务器和时间戳一起写入QPad.exe所在目录的该日志文件中,如下所示:
/ 02/26/19 09:54:52 on `:localhost:1234:: from QPad1*
show `logthis
/ 02/26/19 10:03:03 on `:localhost:1234:: from QPad1*
a:10
答案 1 :(得分:2)
不幸的是,我认为没有一种方法可以检索您的命令历史记录。其他人已经提到了为什么,所以我不再赘述。不过,您以后可以轻松维护日志文件:
启动服务器时,添加-l
标志将使您可以定义日志文件的路径。现在将从客户端发送到服务器的所有命令记录下来。例如
q ../log/logtest -l -p 5555
t:([]date:`date$();sym:`sym$();price:`float$())
将启动侦听5555的q进程,记录导致服务器更新的所有消息。因此,如果我在另一个q会话h:hopen `::5555
中打开5555的句柄
和
更新表t
q)h"insert[`t](2000.01.01;`appl;102.3)"
,0
服务器将像这样更新t
q)t
date sym price
---------------------
2000.01.01 appl 102.3
将创建一个日志文件,其中将显示发送到服务器的所有命令。注意,但是它只会记录那些更改服务器数据状态的命令。
在服务器崩溃的情况下,可以使用与以前相同的命令重新加载此日志文件。
答案 2 :(得分:1)
答案是否定的。 qpad是与q进程交互的GUI。之所以可以检索变量和函数,是因为该过程并未终止。对于查询,默认情况下,q不会保存该查询,除非您自定义.z.pg
以在queryHistory表中插入一条记录。
例如
q).z.pg:{[x]`queryHistory insert ([]queryTime:.z.P;query:enlist x)}
q)queryHistory:([]queryTime:`timestamp$();query:())
q)10+10
20
q)testTab:([]sym:10?`1;val:10?100)
q)queryHistory
queryTime query
---------------
queryHistory不会附加记录,因为这是在q进程本身中完成的,如果您在qpad中这样做:
10+10
testTab:([]sym:10?`1;val:10?100)
您会看到会有记录追加,因此即使您的GUI崩溃了,您也可以跟踪查询
q)queryHistory
queryTime query
-------------------------------------
2019.02.26D17:32:38.471063000 "10+10"
q)queryHistory
queryTime query
----------------------------------------------------------------
2019.02.26D17:32:38.471063000 "10+10"
2019.02.26D17:32:52.790863000 "testTab:([]sym:10?`1;val:10?100)"
答案 3 :(得分:0)
最近要了解的是,q脚本的备份位于“ c / users // Appdata / local”,每5-6分钟自动保存一次。这些是临时文件,在保存脚本时会被删除。但是,如果您的qPad崩溃了,您可以在这里找到文件:)