在q kdb中读取100列以上的csv文件

时间:2019-08-13 09:08:04

标签: kdb

kdb可以通过任何方式读取csv文件,就像熊猫中的read_csv()函数一样简单。

我通常使用以下代码在kdb中读取csv

("I*FS";enlist ",")0:`:a.csv / where a.csv is a csv file with Integer, String, Float and Symbol columns

在实际情况中,很多时候我们要读取的csv文件有100多个列,因此很难提供可起作用的列类型。
kdb中是否有一种方法可以读取csv,从而使kdb可以自己理解列的类型? 像

("*";enlist ",")0:`:a.csv / this fails

1 个答案:

答案 0 :(得分:3)

西蒙·加兰(Simon Garland)多年前写了一个“ csv猜测”脚本:https://github.com/simongarland/csvguess

它可能仍然有意义。我相信某些IDE(例如qStudio和Kx的分析师(?))也内置了此功能。

或者,您可以读取csv的第一行以获取列数(例如n),然后读取n#"*"以将整个csv读取为字符串列:

q)(count["," vs first system"head -1 a.csv"]#"*";enlist ",")0:`:a.csv
col1 col2 col3
----------------------
,"a" ,"1" "2019-01-01"
,"b" ,"2" "2019-01-01"
,"c" ,"3" "2019-01-01"