2013-04-18 1 views
1

J'ai écrit un script q pour créer une table partitionnée et insérer des lignes à partir d'un grand fichier kdb précédemment enregistré. Le script enregistre uniquement les données pour une date spécifique que je passe à partir de la ligne de commande.Comment supprimer un contenu de table partitionné kdb?

Comment puis-je effacer le contenu de la table partitionnée au début du script? Ou plus généralement, comment puis-je m'assurer que le contenu de la table ne soit pas dupliqué si je lance le script plus d'une fois?

+0

Si votre script utilise '.Q.dpft []' pour écrire à chaque partition, vous n'avez pas besoin de vous soucier de la duplication: la fonction supplante données existantes dans le tableau pour cette date. – mollmerx

Répondre

3

Aller à prendre votre partitionné par date, si la structure du répertoire:

2012.04.03 
      /trade 
2012.04.04 
      /trade 
2012.04.05 
      /trade 
       /ticker 
       /price 
       /size 
  1. Pour effacer le contenu d'une date de suppression simplement ce dossier, puis \l.

  2. Pour éviter la duplication vérifier si des données existent d'abord pour cette date:

    select count i from trade where date=2012.04.06

Si une donnée dates peuvent provenir de différents fichiers qui le rend plus délicat. Vous pouvez ajouter une colonne sourceFile et/ou une table distincte pour garder trace des fichiers chargés.

+0

Que voulez-vous dire par "et ensuite \ |"? –

+1

Il signifie que vous devez re-mapper la table afin de voir les changements. Voir http://code.kx.com/wiki/JB:KdbplusForMortals/partitioned_tables#1.3.5_Modifying_Partitioned_Tables – user1895961

+0

@RobertKubrick c'est '\ l', btw, pas' \ | ' – mollmerx

1

Vous pouvez également incorporer le processus de suppression dans une fonction q. Dites l'emplacement que vous écrivez est dans le format:

/hdb/date/tablename/colname 

q) db1:"/hdb/date"; /you can pass this as a argument in a function 

q) deletedb:{[dbname] systemcmd: "rm -rfv ",dbdelete; system systemcmd} 

q) deletedb db1 
Questions connexes