Supposons que ma base de données kdb + comporte quelques tables. Comment puis-je exporter toutes les tables dans des fichiers CSV où le nom de chaque CSV est le même que le nom de la table?Comment exporter chaque table vers csv dans une base de données kdb +?
3
A
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
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.
Fonctionne sur le premier. Merci beaucoup! –
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