对于Q来说是新手,我在按照文档上的示例将数据加载到表中时遇到了一些问题。
我正在运行以下代码:
table1: get `:pathname.csv
虽然它没有引发错误,但是当我运行以下命令时却什么也没出现:
select * from table1
或者在选择特定列时:
select col1 from table1
如果有人可以引导我朝正确的方向前进,那就太好了!
编辑:这似乎有效并保留了我所有的列:
table1: (9#"S";enlist csv) 0: `:data.CSV
答案 0 :(得分:6)
您将需要使用0:
https://code.kx.com/q/ref/filenumbers/#load-csv
确切的用法取决于您的csv,因为您需要定义数据类型以将每一列加载为。
作为一个例子,这里有一个带有较长的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)
我使用字符"JCF"
分别定义数据类型long,character和float。
我enlist
分隔符(","
)表示CSV的第一行包含各列的标题。 (否则,这些可以在您的代码和构造的表中提供)
请注意,在q-sql中,*
与标准SQL中一样不是必需的;您只需执行select from table1
即可查询所有列