首页 > 解决方案 > 如何在 kdb 中加载以 " 作为分隔符的 CSV 文件?

问题描述

如何加载带有"分隔符的 CSV 文件?见第 2 行。dd被加载symbolCol,而不是stringCol

$cat kdb.log
longCol"floatCol"symbolCol"stringCol
1"4"b"bb
2"5""dd

我正在加载使用

tab:("JFSS";enlist "\"") 0: `$"/home/..../kdb.log"

dd在 symbolCol 中加载,而不是 stringCol

q)tab
longCol floatCol symbolCol stringCol
------------------------------------
1       4        b         bb      
2       5        dd                
q)tab[`symbolCol]
`b`dd

标签: csvkdb

解决方案


这实际上看起来可能是解析器中的一个错误 - 值得与 Kx 团队一起提出。用作"分隔符非常罕见,因此他们可能没有考虑到它。

我能找到的唯一解决方法是"用更好的分隔符替换。理想情况下,您应该在 kdb 之外更改分隔符,但如果您必须在 kdb 中进行,您可以这样做:

q)("JFSS";enlist",") 0: ssr[;"\"";","]each read0`$":/home/..../kdb.log"
longCol floatCol symbolCol stringCol
------------------------------------
1       4        b         bb
2       5                  dd
q)

使用永远不会出现在文件中的分隔符。


推荐阅读