如何将每个 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
这种方法的优点是可以在保存到磁盘之前指定分隔符。
假设我的 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
这种方法的优点是可以在保存到磁盘之前指定分隔符。