2010-10-07 24 views
15

Existe-t-il un moyen d'obtenir le code de hachage d'une ligne dans postgresql?Recherche de la valeur de hachage d'une ligne dans postgresql

Je dois exporter quelques données seulement s'il y a quelques changements dans les données après la dernière exportation, les dernières lignes de données exportées peuvent être stockées dans une table, le quand j'ai besoin d'exporter les données que je peux obtenir le les valeurs de hachage de toutes les données et exportent uniquement celles qui ont une valeur de hachage différente de la dernière exportation.

Est-il possible d'utiliser postgresql?

Merci

Répondre

29

Cast la ligne de texte et utiliser md5 pour faire un hachage:

SELECT 
    md5(CAST((f.*)AS text)) 
FROM 
    foo f; 
+4

OU, plus court 'SELECT md5 (f :: text) FROM f' – Jelen

3

Une autre approche serait de définir une ON INSERT OR UPDATE trigger qui insérer l'horodatage en cours dans une colonne last_modified, puis simplement Interrogation en fonction de cette colonne lorsque votre processus d'importation fonctionne.

+0

Le problème que je suis face est que je travaille sur un système existant, où les données peuvent provenir d'une importation ou par ajout/modifier les pages et la dernière colonne modifiée sur toutes les données n'est pas fiable. C'est la raison pour laquelle je vérifie une sorte de technique de hachage pour vérifier les changements. –

+1

Avec cette approche, le déclencheur de base de données déterminerait et écrirait l'heure 'last_modified' - pas les clients qui mettent des données dans cette table. Les clients ne connaîtront pas cette colonne, et ne devraient pas - votre base de données la gérerait elle-même. –