2010-10-07 15 views
15

में एक पंक्ति का हैश मान ढूँढना postgresql में एक पंक्ति का हैश कोड प्राप्त करने का कोई तरीका है?postgresql

मुझे अंतिम डेटा के बाद डेटा में कुछ बदलाव होने पर कुछ डेटा निर्यात करने की आवश्यकता है, आखिरी निर्यात की गई डेटा पंक्तियों को एक तालिका में संग्रहीत किया जा सकता है, जब मुझे फिर से डेटा निर्यात करने की आवश्यकता होती है, तो मुझे सभी डेटा के हैश मूल्य और केवल उन पंक्तियों को निर्यात करें जिनके पास पिछले निर्यात की तुलना में एक अलग हैश मूल्य है।

क्या पोस्टग्रेस्क्ल का उपयोग करना संभव है?

धन्यवाद

उत्तर

29

कास्ट पंक्ति पाठ और एक हैश बनाने के लिए md5 उपयोग करने के लिए:

SELECT 
    md5(CAST((f.*)AS text)) 
FROM 
    foo f; 
समस्या का सामना करना पड़ रहा हूँ मैं एक विरासत सिस्टम पर काम कर रहा हूँ है
+4

या, छोटे 'चयन एमडी 5 (एफ :: पाठ) एफ से' – Jelen

3

एक वैकल्पिक दृष्टिकोण एक ON INSERT OR UPDATE trigger जो एक last_modified स्तंभ में वर्तमान टाइमस्टैंप सम्मिलित होगा, और फिर बस इस स्तंभ के आधार पर क्वेरी करने जब अपने आयात प्रक्रिया चलाता है स्थापित करने के लिए किया जाएगा।

+0

, जहां डेटा एक आयात से या ऐड के माध्यम से/आ सकते हैं सभी डेटा पर पृष्ठों को संपादित करें और अंतिम संशोधित कॉलम भरोसेमंद नहीं है। यही कारण है कि मैं किसी भी बदलाव की जांच करने के लिए किसी प्रकार की हैश तकनीक की जांच कर रहा हूं। –

+1

इस दृष्टिकोण के साथ, डेटाबेस ट्रिगर 'last_modified' समय निर्धारित और लिख रहा होगा - क्लाइंट इस तालिका में डेटा डालने नहीं। ग्राहकों को इस कॉलम के बारे में पता नहीं चलेगा, और नहीं - आपका डेटाबेस इसे स्वयं प्रबंधित करेगा। –