如何在 kdb 中加载以 " 作为分隔符的 CSV 文件?
How can I load a CSV file with " as the delimiter in kdb?
如何加载带有 "
分隔符的 CSV 文件?见第二行。 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
这实际上看起来可能是解析器中的错误 - 值得向 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)
使用永远不会出现在文件中的分隔符。
kdb 支持建议此代码。 kdb+ 使用双引号来检测和忽略文件中嵌入的定界符。因此,我们可以按如下方式解析 csv 文件,而不是使用 0:。
split:"\"" vs' read0 `$":/tmp/kdb.log";
headers:`$split[0];
tab:flip headers!"JFS*"$flip 1_split;
如何加载带有 "
分隔符的 CSV 文件?见第二行。 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
这实际上看起来可能是解析器中的错误 - 值得向 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)
使用永远不会出现在文件中的分隔符。
kdb 支持建议此代码。 kdb+ 使用双引号来检测和忽略文件中嵌入的定界符。因此,我们可以按如下方式解析 csv 文件,而不是使用 0:。
split:"\"" vs' read0 `$":/tmp/kdb.log";
headers:`$split[0];
tab:flip headers!"JFS*"$flip 1_split;