如何将每个表导出到kdb +数据库中的csv?

时间:2017-04-01 08:55:29

标签: kdb q-lang

假设我的kdb +数据库有几个表。如何将所有表导出到csv文件,其中每个csv的名称与表名相同?

2 个答案:

答案 0 :(得分:7)

可能有多种方法可以解决这个问题,一种解决方案可能是:

 q)t1:([]a:1 2 3;b:1 2 3)
 q)t2:([]a:1 2 3;b:1 2 3;c:1 2 3)
 q){save `$(string x),".csv"} each tables[]
   `:t1.csv`:t2.csv

参考:http://code.kx.com/q/ref/filewords/#save

如果您希望指定要保存的文件的目录,那么您可以像这样增强功能:

q){[dir;tSym] save ` sv dir,(`$ raze string tSym,`.csv)}[`:C:/Users/dhughes1/Documents;] each tables[]
  `:C:/Users/dhughes1/Documents/t1.csv`:C:/Users/dhughes1/Documents/t2.csv

答案 1 :(得分:0)

save的另一种方法是使用0:prepare文字,指定“,”的分隔符:

q)tab:([]a:1 2 3;b:`a`b`c)
q)show t:","0:tab
"a,b"
"1,a"
"2,b"
"3,c"

再次save文字:

q)`:tab 0: t
`:tab

此方法的优点是可以在保存到磁盘之前指定分隔符。