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

How to export every table to csv in a kdb+ database?

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

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

 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

save 的替代方法是使用 0: to 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

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