如何将csv加载到Q中的表中?

时间:2019-02-11 22:38:02

标签: database kdb

对于Q来说是新手,我在按照文档上的示例将数据加载到表中时遇到了一些问题。

我正在运行以下代码:

table1: get `:pathname.csv

虽然它没有引发错误,但是当我运行以下命令时却什么也没出现:

select * from table1

或者在选择特定列时:

select col1 from table1

如果有人可以引导我朝正确的方向前进,那就太好了!

编辑:这似乎有效并保留了我所有的列:

table1: (9#"S";enlist csv) 0: `:data.CSV

1 个答案:

答案 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即可查询所有列