【问题标题】:Passing db path to \l or .Q.l using a variable使用变量将 db 路径传递给 \l 或 .Q.l
【发布时间】:2011-07-04 13:44:15
【问题描述】:

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

目前看起来是这样的:

q) \l /path/to/dbDir        #Works

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

dbPath:`$.z.x 0
.Q.l hsym dbPath            #Fails

当使用参数 /path/to/dbDir 运行时,脚本总是会因为一些不可读的东西而失败,并且:

':/path/to/dbDir: No such file or directory

有人可以帮忙吗?

【问题讨论】:

    标签: kdb q-lang


    【解决方案1】:

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

    在你的情况下,你想要

    system"l ",.z.x 0
    

    (顺便说一句,我认为\l 不涉及代码,只涉及数据,所以不要尝试使用它来加载额外的.q 文件)

    【讨论】:

      【解决方案2】:

      .Q.l\l 的同义词,它只接受一个参数,它不是 hsym,而是文件或目录名称。

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

      【讨论】:

        【解决方案3】:

        好的,当我们尝试不带 hsym 的 .Q.l 时,它似乎可以工作:

        dbPath:`$.z.x 0
        .Q.l dbPath
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-23
          • 2021-09-14
          • 2020-04-02
          相关资源
          最近更新 更多