sql - समझ - हिंदी में फॉक्सप्रो परिभाषा




पोस्टग्रेज़ के साथ क्रॉस-डेटाबेस प्रश्नों को निष्पादित करना संभव है? (4)

मुझे लगता है कि उत्तर नीचे दिए गए त्रुटि संदेश (और यह Google परिणाम ) पर आधारित नहीं है, लेकिन क्या पोस्टग्रेज़ का उपयोग कर क्रॉस-डेटाबेस क्वेरी करने के लिए वैसे भी है?

databaseA=# select * from databaseB.public.someTableName;
ERROR:  cross-database references are not implemented:
 "databaseB.public.someTableName"

मैं कुछ डेटा के साथ काम कर रहा हूं जो दो डेटाबेस में विभाजित है हालांकि डेटा वास्तव में दो के बीच साझा किया जाता है (एक डेटाबेस में उपयोगकर्ता आईडी कॉलम अन्य डेटाबेस में users तालिका से आते हैं)। मुझे नहीं पता कि ये स्कीमा के बजाय दो अलग-अलग डेटाबेस क्यों हैं, लेकिन c'est la vie ...


dblink() - एक दूरस्थ डेटाबेस में एक क्वेरी निष्पादित करता है

dblink एक क्वेरी निष्पादित करता है (आमतौर पर एक चयन, लेकिन यह किसी भी SQL कथन हो सकता है जो पंक्तियों को वापस करता है) दूरस्थ डेटाबेस में।

जब दो पाठ तर्क दिए जाते हैं, तो पहले व्यक्ति को लगातार कनेक्शन के नाम के रूप में देखा जाता है; अगर पाया जाता है, तो उस कनेक्शन पर आदेश निष्पादित किया जाता है। यदि नहीं मिला, तो पहली तर्क को dblink_connect के रूप में कनेक्शन जानकारी स्ट्रिंग के रूप में माना जाता है, और संकेत दिया गया है कि यह आदेश केवल इस आदेश की अवधि के लिए बनाया गया हो।

एक अच्छा उदाहरण में से एक:

SELECT * 
FROM   table1 tb1 
LEFT   JOIN (
   SELECT *
   FROM   dblink('dbname=db2','SELECT id, code FROM table2')
   AS     tb2(id int, code text);
) AS tb2 ON tb2.column = tb1.column;

नोट: मैं भविष्य में संदर्भ के लिए यह जानकारी दे रहा हूं। Refrence


आपके द्वारा क्रॉस डेटाबेस प्रश्नों के बारे में एक ही निष्कर्ष पर आने से पहले मैंने इसमें भाग लिया है। मैं जो कर रहा था वह टेबल स्पेस को विभाजित करने के लिए स्कीमा का उपयोग कर रहा था, जिस तरह से मैं टेबल को समूहीकृत रख सकता था लेकिन फिर भी उन सभी से पूछताछ करता हूं।


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

मैंने बड़ी सफलता के साथ पहले डीबी-लिंक और टीडीएस-लिंक का उपयोग किया है।


नोट: मूल पूछताछ के रूप में, यदि आप एक ही मशीन पर दो डेटाबेस सेट अप कर रहे हैं, तो संभवतः आप इसके बजाय दो schemas बनाना चाहते हैं - उस स्थिति में आपको उनसे पूछताछ करने के लिए विशेष कुछ भी नहीं चाहिए।

9.3 के रूप में अद्यतन करें

अब आप किसी भी पोस्टग्रेस डेटाबेस - स्थानीय या दूरस्थ में तालिकाओं से कनेक्ट करने के लिए नए postgres_fdw (विदेशी डेटा रैपर) का उपयोग कर सकते हैं।

ध्यान दें कि अन्य लोकप्रिय डेटा स्रोतों के लिए विदेशी डेटा रैपर हैं । इस समय, केवल postgres_fdw और file_fdw आधिकारिक पोस्टग्रेज़ वितरण का हिस्सा हैं।

प्री -9.3 के लिए मूल उत्तर

यह कार्यक्षमता डिफ़ॉल्ट PostgreSQL इंस्टॉल का हिस्सा नहीं है, लेकिन आप इसे जोड़ सकते हैं। इसे dblink कहा जाता है।

मैंने इसका कभी भी उपयोग नहीं किया है, लेकिन यह बाकी PostgreSQL के साथ बनाए रखा और वितरित किया जाता है। यदि आप PostgreSQL के संस्करण का उपयोग कर रहे हैं जो आपके लिनक्स डिस्ट्रो के साथ आया है, तो आपको postgresql-contrib नामक एक पैकेज स्थापित करने की आवश्यकता हो सकती है।





postgresql