एक अन्य तरीका जिसके लिए कस्टम फ़ंक्शन की आवश्यकता नहीं है, वह है loread(lo_open(...))
का उपयोग करना संयोजन, जैसे:
UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL
इस कोड में एक समस्या है, loread
फ़ंक्शन को दूसरे पैरामीटर के रूप में पढ़ने के लिए बाइट्स की अधिकतम संख्या की आवश्यकता होती है (1000000
पैरामीटर मैंने ऊपर उपयोग किया है), इसलिए यदि आपका डेटा बड़ा है तो आपको यहां वास्तव में बड़ी संख्या का उपयोग करना चाहिए। अन्यथा, इतने बाइट्स के बाद सामग्री को काट दिया जाएगा, और आपको सारा डेटा bytea
में वापस नहीं मिलेगा फ़ील्ड.
यदि आप OID से टेक्स्ट फ़ील्ड में कनवर्ट करना चाहते हैं, तो आपको रूपांतरण फ़ंक्शन का भी उपयोग करना चाहिए, जैसे:
UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')
(262144
ओपन मोड के लिए एक ध्वज है, 40000
हेक्सा में, जिसका अर्थ है "ओपन रीड ओनली")