blob - Oracle clob over dblink with different charset -
यहाँ परिदृश्य है:
ओरेकल ए: वर्णसेट WE8ISO8859P1
ओरेकल बी: वर्णसेट WE8MSWIN1252
ओरेकल ए & lt; - dblink -> ओरेकल बी
ओरेकल बी सीधे, फायरवॉल के मुद्दों पर नहीं जा सकता: (
मुझे ओरेकलबी से कुछ बाइनरी फाइलें मिलनी हैं और ये फाइलें सीओएलबी प्रकार के कॉलम में हैं (मुझसे मत पूछो क्यों और मैं ब्लॉब में परिवर्तन नहीं कर सकता।)
मैं फ़ाइलों को बी से ए तक लाने के लिए एक "चयन करें" का उपयोग कर रहा हूं और उन्हें clob_to_blob फ़ंक्शन का उपयोग करके द्विआधारी में कनवर्ट कर रहा हूं।
मुझे कुछ दूषित फाइल मिल रही है और मेरा मानना है कि ओरेकल, WE8ISWIN1252 को स्वचालित रूप से डीब्लिंक पर (अच्छी तरह से, कॉलम CLOB है, तो यह टेक्स्ट है, सही है?) पर WE8ISO8859P1 को परिवर्तित कर रहा है।
इस के लिए कोई वैकल्पिक हल है?
पहले से धन्यवाद
y करें कहां DBMS_LOB.CONVERTTOBLOB@remote (....)
का उपयोग करने की कोशिश की लेकिन आप संभवत: दूरस्थ CLOB के चेकसम के कुछ प्रकार प्राप्त करना चाहते हैं, यह देखने के लिए कि वे अक्षर कनवर्ज़न प्राप्त कर रहे हैं, जो भी मूल बाहरी स्रोत से अपडेट किया गया यही है, यदि क्लाइंट वर्णों, जब सम्मिलित किया जाता है, डेटाबेस वर्णों से अलग है, तो समस्या पहले से ही आपके चयन से पहले हो सकती है।
जोड़ने के लिए संपादित।
निकटतम मैं ऊपर आने के लिए लिंक के दूसरे छोर पर कुछ ऑब्जेक्ट की आवश्यकता हो सकती है। सबसे पहले एक ऐसा समारोह जो दूरस्थ अंत में रूपांतरण करता है। दूसरा, एक दृश्य जो डेटा के 'ब्लॉब' दृश्य प्रस्तुत करता है यह एक डमी टेबल का उपयोग करता है (v $ sql के आधार पर के रूप में यह पहला CLOB था जो मुझे मिल सकता था)। कोई कारण नहीं मैं देख सकता हूँ कि आप केवल CLOB को फ़ंक्शन के पैरामीटर के रूप में नहीं दे सकते।
फ़ंक्शन ret_blob return blob कर्सर c_1 का चयन करें sql_fulltext, sql_id, लंबाई (sql_fulltext) है ) V_sql से जहां sql_id = 'bzmb01whp36wt'; Rec_c1 सी_1% पंक्तिप्रकार; - v_blob blob; V_dest संख्या: = 1; V_src संख्या: = 1; V_lang संख्या: = 0; V_warn संख्या; - ओपन सी_1 शुरू; सीडीआई 1 में रिकैग 1; बंद c_1; Dbms_lob.createtemporary (v_blob, TRUE); - dbms_lob.CONVERTTOBLOB (v_blob, rec_c1.sql_fulltext, DBMS_LOB.LOBMAXSIZE, v_dest, v_src, DBMS_LOB.DEFAULT_CSID, v_lang, v_warn); - dbms_output.put_line (':' || v_warn || '& gt;' 'लंबाई (v_blob)); - वापसी v_blob; समाप्त; / दोहरी से चुनें ret_blob के रूप में देखें rblob;
फिर, स्थानीय डाटाबेस से,
को rblob @ रिमोट से चुनें ret_blob के रूप में टेबल टी बनाएं
Comments
Post a Comment