2017-08-24 2 views
0

Je dois ajouter une clé étrangère à une table que j'ai importé en utilisant un csvAjout clé étrangère à la KDB table existante

table:("SSSSSSSSSFFFFSSSSSFSSSSSSSSSSSSSSS"; enlist ",") 0: 
`:table.csv 

Je ne veux pas avoir à redéfinir la table. Y a-t-il un moyen de faire cela?

Répondre

2

q)p:([p:`p1`p2`p3`p4`p5`p6]name:`nut`bolt`screw`screw`cam`cog;color:`red`green`blue`red`blue`red;weight:12 17 17 14 12 19;city:`london`paris`rome`london`paris`london) 
 
q)sp:([]s:`s1`s1`s1`s1`s4`s1`s2`s2`s3`s4`s4`s1;p:`p$`p1`p2`p3`p4`p5`p6`p1`p2`p2`p2`p4`p5;qty:300 200 400 200 100 100 300 400 200 200 300 400) 
 
q) 
 
q)update `p$p from `sp 
 
`sp 
 
q)meta sp 
 
c | t f a 
 
---| ----- 
 
s | s  
 
p | s p 
 
qty| j

Définition d'une clé étrangère est similaire à l'énumération/coulée et donc une surcharge de $ est utilisé. `Sp signifie que la table est mise à jour en place.

+0

N'y a-t-il aucun moyen de le faire sans redéfinir la table? Ma table a plus de 600 000 lignes et environ 30 colonnes – michaelg

+1

Salut Michael, excuses je vois juste maintenant. Qu'entendez-vous par redéfinition? La mise à jour ci-dessus crée la clé étrangère en place et ne fait pas de copie de la table en mémoire. Merci, Jamie – jomahony