从qpython运行读取csv并分配给表

时间:2018-09-25 09:05:13

标签: kdb

我想在python中运行以下q代码:

table: ("ISI"; enlist ",") 0:`data.csv

我现在开始探索qpython,因为它目前在Windows中较易使用(与pyq相比),并希望执行以下操作:

q = qconnection.QConnection(host = 'localhost', port = 5000)
q.sync('table: ("ISI"; enlist ",") 0:`data.csv')

是否可能发生这种情况,或者将来在Windows稳定时需要使用pyq吗?我在q.sync中看到的示例是查询和函数,这些查询和函数采用参数列表,而不是直接在q环境中运行代码。我想确保我不会丢失其他一些可用于当前任务的功能。

1 个答案:

答案 0 :(得分:1)

在尝试访问文件时,必须使用格式为`:data.csv的文件句柄(请注意开头是冒号),而不要使用符号。您可以使用hsym将符号转换为文件句柄。

您还应该在Windows的q进程中使用\dir,检查文件是否与q进程位于相同的工作目录中,否则您将需要调整文件句柄以指向正确的位置< / p>

q)hsym `data.csv
`:data.csv

具有内容的文件data.csv:

id,sym,val
1,APPL,50
2,GOOG,100

运行与您使用的文件句柄相同的命令:

In:   q.sync('table: ("ISI"; enlist ",") 0: `:data.csv')

In:   q.sync('table: ("ISI"; enlist ",") 0:hsym `qpython.csv')

使用qpython检查结果变量:

In:   q.sync('table')
Out:  rec.array([(1, b'APPL',  50), (2, b'GOOG', 100)],
      dtype=[('id', '<i4'), ('sym', 'S4'), ('val', '<i4')])

检查q过程

q)table
id sym  val
-----------
1  APPL 50
2  GOOG 100