PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL:OID से Bytea तक

एक अन्य तरीका जिसके लिए कस्टम फ़ंक्शन की आवश्यकता नहीं है, वह है 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 हेक्सा में, जिसका अर्थ है "ओपन रीड ओनली")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.6.3 . में न तो परसेंटाइल_कंट और न ही परसेंटाइल_डिस्क वांछित 75वें पर्सेंटाइल की गणना कर रहे हैं

  2. डीबी सहयोगी संस्थाएं और अनुक्रमण

  3. प्रोग्राम से कॉपी को अज्ञात कॉलम के साथ एक गतिशील तालिका में पोस्ट करें

  4. उसकेोकू पर आरडीएस प्रश्न करने में असमर्थ

  5. पोस्टग्रेस अपवाद:क्वेरी द्वारा कोई परिणाम नहीं लौटाया गया।