2011-08-04 3 views
0

J'ai une base de données et un fichier csv qui est mis à jour une fois par jour. J'ai réussi à mettre à jour ma table1 à partir de ce fichier en créant un fichier journal distinct avec l'enregistrement de la dernière insertion. Non, je dois créer une nouvelle table2 où je garde les calculs de la table1.Mise à jour des tables en utilisant les données quotidiennes d'autres tables Postgres/Python

Mon problème est que ces calculs sont basés sur 10, 20 et 90 lignes précédentes de table1.

La question est - comment puis-je mettre à jour efficacement table2 à partir des données de la table1 sur une base quotidienne? Je ne veux pas refaire les calculs tous les jours depuis le début de la table, car cela prendra beaucoup de temps pour moi.

Merci pour votre aide!

+0

Pourriez-vous préciser la question? Voulez-vous mettre à jour 'table2' avec les données de 'table1' ou avec les données que vous avez calculées sur 'table1' et les mettre dans un fichier CSV? – artdanil

+0

Faites-vous vos calculs en Python ou pouvez-vous les implémenter en SQL et les laisser s'exécuter par PostgreSQL? Je ne vois pas pourquoi vous ne pouvez pas simplement utiliser WHERE pour limiter votre jeu de résultats aux lignes ajoutées récemment. Des précisions sur cette tâche seraient utiles, comme l'a déjà souligné Artdanil. – fviktor

+0

Ok, je suis en train de mettre à jour les données de CSV à table1 tous les jours. À partir de la table 1, j'obtiens ces données, je fais des calculs, puis je mets à jour la table2. table1 se composent de la société, informations de comptabilité, prix du marché récent. table2 devrait avoir des données statistiques par entreprise. Désolé, je suis SQL novice et je ne sais pas vraiment comment séparer les calculs par entreprise pour les 20-30 dernières lignes. – Timka

Répondre

0

La réponse est "aussi bien que l'on pourrait attendre."

Sans voir vos tables, données et requêtes, et les statistiques de votre machine, il est difficile d'être trop précis. Cependant, en général, les mises à jour font trois étapes. C'est un peu trop simplifié mais cela vous permet d'estimer la performance.

D'abord, il sélectionne les données nécessaires. Ensuite, il marque les lignes qui ont été mises à jour comme supprimées, puis il insère de nouvelles lignes avec les nouvelles données dans la table. En général, votre limite est généralement la sélection de données. Tant que vous pouvez exécuter efficacement la requête SELECT pour obtenir les données souhaitées, la mise à jour devrait fonctionner relativement bien.

Questions connexes