将csv字符串转换为csv中的表

时间:2020-02-05 05:59:27

标签: kdb

如果我们有一个包含csv的文件,那么我们可以使用0读取它: 例如,我们在磁盘上有一个文件x.csv,然后将其转换为表很容易,如下所示

("SFJ";enlist",")0:`:/x.csv

但是,如何才能将一个csv字符串隐藏到表中?
字符串:

"sym,px,vol
GG,10.2,100
AA,11.2,1000"

预期输出:表

sym px  vol
"GG"    10.2    100
"AA"    11.2    1000

2 个答案:

答案 0 :(得分:3)

可以使用0:而不是文件句柄来传递字符串,并且将正常创建表:

q)s:("sym,px,vol";"GG,10.2,100";"AA,11.2,1000")
q)s
"sym,px,vol"
"GG,10.2,100"
"AA,11.2,1000"
q)("SFJ";enlist",")0:s
sym px   vol
-------------
GG  10.2 100
AA  11.2 1000

答案 1 :(得分:2)

如果您需要以编程方式从一个大字符串csv转到Eliot的s,则根据csv字符串的格式有几种选择。

// \n delimited 
s:` vs "sym,px,vol\nGG,10.2,100\nAA,11.2,1000"

// if you know the row and col count. 
s:3 3#"," vs "sym,px,vol,GG,10.2,100,AA,11.2,1000"

// if you just know the col count
s:"sym,px,vol,GG,10.2,100,AA,11.2,1000"
f:{[str;noCol]
    str:"," vs str;   
    noRow:`long$(count str)%noCol;
    (noRow, noCol)#str
}
f[s;3] 

所有这三个输出(“ sym,px,vol”;“ GG,10.2,100”;“ AA,11.2,1000”)