使用变量将数据库路径传递到\ l或.Ql

Sah*_*has 4 kdb q-lang

我正在编写一个在特定路径中加载数据库并对其进行一些处理的aq脚本。db的位置当前在脚本中进行了硬编码,但是我想将db路径作为参数传递,并从变量的路径中加载它。

当前看起来像这样:

q) \l /path/to/dbDir        #Works
Run Code Online (Sandbox Code Playgroud)

我发现.Ql应该让我们使用变量来执行此操作,因此我尝试在脚本中使用以下内容,

dbPath:`$.z.x 0
.Q.l hsym dbPath            #Fails
Run Code Online (Sandbox Code Playgroud)

当使用参数/ path / to / dbDir运行时,该脚本始终会因一些不可读的内容而失败,并且:

':/path/to/dbDir: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Aar*_*ies 5

\x ...始终等于system"x ...",这是“我如何将变量传递给\命令问题的一般解决方案

在你的情况下,你想要

system"l ",.z.x 0
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,我不认为.Q.l是参与\l的代码,只有数据,所以不要尝试用它来加载额外的.Q文件)


小智 4

.Ql与\l同义,它只接受一个参数,该参数不是 hsym,而是文件或目录名。

顺便说一句,不可读的东西是函数定义,后面跟着一个类型错误(因为它不期望出现 hsym)