स्कीमा के लिए तालिकाओं में रेडशिफ्ट टेबल दिखाई नहीं दे रही है?


12

Redshift पर, मेरी तालिका निम्न क्वेरी में क्यों नहीं दिखाई देती है? यह निश्चित रूप से मौजूद है, जैसा कि मेरे द्वारा चलाए जाने वाले अगले प्रश्न द्वारा दिखाया गया है। मुझे स्कीमा के लिए सभी तालिकाओं को सूचीबद्ध करने का एक तरीका चाहिए:

mydb=# select distinct(tablename) from pg_table_def where schemaname = 'db';
 tablename 
-----------
(0 rows)

mydb=# \d db.some_table
                    Table "db.some_table"
     Column      |            Type             | Modifiers 
-----------------+-----------------------------+-----------
...correct info shows up here...
...but nothing showed up above?

3
आपके प्रश्न से असंबंधित, लेकिन विशिष्ट कोई फ़ंक्शन नहीं है। मेरा सुझाव है कि आप भ्रम से बचने के लिए कोष्ठक हटा दें। दूसरे विचार पर आप स्वयं को अलग कर सकते हैं क्योंकि एक स्कीमा में एक ही नाम के साथ दो तालिकाएँ नहीं हो सकती हैं।
लेणर्ट

का परिणाम क्या है select schemaname, tablename from pg_table_def:?
लेनार्ट

क्या आपको यकीन है कि आपका स्कीमा-नाम "db" है, क्योंकि यह "डेटाबेस नाम" जैसा दिखता है।
सेंथिल

जवाबों:


13

Redshift में PG_TABLE_DEF केवल उन तालिका के बारे में जानकारी देता है जो उपयोगकर्ता को दिखाई देती हैं, दूसरे शब्दों में, यह आपको केवल वे तालिकाएँ दिखाएगी जो स्कीमा (एस) में हैं जो कि चर search_path में परिभाषित हैं। यदि PG_TABLE_DEF अपेक्षित परिणाम नहीं देता है, तो सत्यापित करें कि प्रासंगिक स्कीमा (ओं) को शामिल करने के लिए search_path पैरामीटर सही तरीके से सेट किया गया है।

इसे इस्तेमाल करे -

mydb=# set search_path="$user",db;

फिर अपनी क्वेरी चलाएं -

mydb=# select tablename from pg_table_def where schemaname = 'db';

कृपया 'यह करें' की तुलना में अधिक जानकारी प्रदान करने के लिए अपने उत्तर को संपादित करें।
RLF

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.