对Q来说很新,我在按照文档中的示例将数据加载到表中时遇到了一些问题.
我正在运行以下代码:
table1: get `:pathname.csv
Run Code Online (Sandbox Code Playgroud)
虽然它不会抛出错误,但是当我运行以下命令时,没有任何内容出现:
select * from table1
Run Code Online (Sandbox Code Playgroud)
或者在选择特定列时:
select col1 from table1
Run Code Online (Sandbox Code Playgroud)
如果有人能指导我朝着正确的方向前进,那就太棒了!
编辑:这似乎工作并保留我的所有列:
table1: (9#"S";enlist csv) 0: `:data.CSV
Run Code Online (Sandbox Code Playgroud)
您将需要使用0:
https://code.kx.com/q/ref/filenumbers/#load-csv
具体用法取决于您的csv,因为您需要定义数据类型以将每个列加载为.
作为一个例子,这里我有一个带有long,char和float列的CSV:
(kdb) chronos@localhost ~/Downloads $ more example.csv
abc,def,ghi
1,a,3.4
2,b,7.5
3,c,88
(kdb) chronos@localhost ~/Downloads $ q
KDB+ 3.6 2018.10.23 Copyright (C) 1993-2018 Kx Systems
l64/ 4()core 3894MB chronos localhost 127.0.0.1 EXPIRE 2019.06.15 jonathon.mcmurray@aquaq.co.uk KOD #5000078
q)("JCF";enlist",")0:`:example.csv
abc def ghi
-----------
1 a 3.4
2 b 7.5
3 c 88
q)meta ("JCF";enlist",")0:`:example.csv
c | t f a
---| -----
abc| j
def| c
ghi| f
q)
Run Code Online (Sandbox Code Playgroud)
我使用chars "JCF"
分别定义数据类型long,character和float.
我enlist
使用delimiter(","
)来指示CSV的第一行包含列的标题.(否则,可以在您的代码和构建的表中提供这些)
另请注意,在q-sql中,*
没有必要像标准SQL那样; 你可以简单select from table1
地查询所有列