2017-04-01 3 views

Répondre

7

Il peut y avoir un certain nombre de façons d'aborder ce, une solution pourrait être:

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 

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

Si vous souhaitez spécifier le répertoire du fichier est enregistré vers le bas alors vous pourriez renforcer la fonction comme ceci:

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 
+0

Fonctionne sur le premier. Merci beaucoup! –

+4

Notez que cela serait beaucoup plus complexe si vous parlez d'une base de données historique avec des tables partitionnées/éjectées par date, etc. – terrylynch

0

Une méthode alternative pour save consiste à utiliser 0: àtexte, en spécifiant un délimiteur de « »:

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

Et encore une fois à save texte:

q)`:tab 0: t 
`:tab 

L'avantage de cette méthode est que le séparateur peut être spécifié avant d'enregistrer sur le disque.