तालिकाएँ दिखाएं, रेडशिफ्ट में समकक्ष तालिकाओं का वर्णन करें


79

मैं नए खिलाड़ियों के लिए नया हूं, क्या कोई मुझे बता सकता है कि mysql कमांड के लिए redshifts के समकक्ष क्या हैं?

show tables -- redshift command
describe table_name -- redshift command

जवाबों:


105

सभी जानकारी एक PG_TABLE_DEFतालिका, प्रलेखन में पाई जा सकती है ।

publicस्कीमा (डिफ़ॉल्ट) में सभी तालिकाओं को सूचीबद्ध करना - show tablesसमकक्ष:

SELECT DISTINCT tablename
FROM pg_table_def
WHERE schemaname = 'public'
ORDER BY tablename;

Table_name नामक तालिका के सभी कॉलमों का विवरण - describe tableसमकक्ष:

SELECT *
FROM pg_table_def
WHERE tablename = 'table_name'
AND schemaname = 'public';

1
क्या संबंधित स्तंभों के डिफ़ॉल्ट मान प्राप्त करने का कोई तरीका है?
भूपेन्द्र केसवानी 12

4
pg_table_def रिटर्न इंडेक्स भी। select distinct table_name from information_schema.columns where table_schema = 'public'इसके बजाय उपयोग करने के लिए सुरक्षित ।
j_c

क्या वह स्तंभ क्रम में है?
abourget

कॉलम जानकारी निकालने के लिए सरल तरीके के झुंड के लिए alberton.info/postgresql_meta_info.html देखें , जिसमें ऑर्डर शामिल है
abourget

हो सकता है कि वे इस उत्तर के समय काम करते थे, लेकिन ये प्रश्न अब (2018-07-11) सभी तालिकाएँ वापस नहीं करते हैं। उदाहरण के लिए, मैंने अपना स्वयं का स्कीमा बनाया और उस स्कीमा में एक तालिका बनाई, और pg_table_defतालिका में उस तालिका के बारे में कोई जानकारी नहीं है। @J_c द्वारा सुझाई गई क्वेरी - information_schemaबजाय काम करने के लिए क्वेरी करने के लिए।
14

83

मुझे अपनी तालिका और स्तंभों का विवरण प्राप्त करने के लिए सूचना स्कीमा से चयन करना पड़ा; अगर यह किसी की मदद करता है:

SELECT * FROM information_schema.tables
WHERE table_schema = 'myschema'; 

SELECT * FROM information_schema.columns
WHERE table_schema = 'myschema' AND table_name = 'mytable'; 

1
मैं हमारे सभी सेगमेंट SQL डेटा को AWS Redshift में संग्रहीत कर रहा हूं, और अब तक यह एकमात्र समाधान है जो मैं भर में आया हूं जो मेरे लिए काम किया है!
एमजीग

2
मुझे यह श्रेष्ठ विधि लगती है। Redshift में information_schema pg_table का सुपरसेट है। इसके अलावा, pg_table_def कुछ प्रकार के अनुमति मुद्दे से पीड़ित लगता है: जबकि एक स्कीमा / तालिका pg_tables में होगी, pg_table_def में संबंधित जानकारी वहाँ नहीं होगी। मेरे पास सभी pg_catalog और सार्वजनिक स्कीमा हैं। निराशा होती।
मार्क Gerolimatos 20

3
@MarkGerolimatos में अपनी टेबल देखने के लिए pg_table_def, आप अपने SEARCH_PATH को स्कीमा जोड़ना होगा: SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME। निश्चित रूप से सहज नहीं है ...
मार्को रॉय

33

या केवल:

\dt टेबल दिखाने के लिए

\d+ <table name> एक तालिका का वर्णन करने के लिए

संपादित करें: psql कमांड लाइन क्लाइंट का उपयोग कर काम करता है


यह मेरे लिए काम नहीं करता है .. यह Posgres में काम करेगा, लेकिन Redshift नहीं .. टॉमस के जवाब के साथ जाने के लिए बेहतर है।
मार्क बटलर

1
मैं SQLWorkbench के माध्यम से Redshift को एक्सेस कर रहा हूं (जैसा कि AWS में शुरू किए गए गाइड में अनुशंसित है)। अगर मैं कोशिश \dtकरूँ तो मुझे मिल जाएगा Error: Syntax error at or near "\"। क्या आप किसी अन्य तरीके से Redshift को एक्सेस कर रहे हैं?
मार्क बटलर

2
हाँ, psql कमांड लाइन क्लाइंट का उपयोग कर। मैं अपना जवाब अपडेट करूंगा।
मैट

2
वास्तव में मुझे एहसास नहीं था कि आप psql क्लाइंट के साथ Redshift से जुड़ सकते हैं, लेकिन यह अमेज़ॅन प्रलेखन में है। यह वास्तव में बहुत उपयोगी है। धन्यवाद।
मार्क बटलर

यह टॉमाज़ के समाधान की तुलना में थोड़ी अलग जानकारी दिखाता है। उदाहरण के लिए, \ d + tablename सॉर्टकी जानकारी नहीं दिखाता है।
कर्क

10

टॉमाज़ टाइबुलेविक का उत्तर जाने का अच्छा तरीका है।

SELECT * FROM pg_table_def WHERE tablename = 'YOUR_TABLE_NAME' AND schemaname = 'YOUR_SCHEMA_NAME';

यदि स्कीमा नाम खोज पथ में परिभाषित नहीं है, तो वह क्वेरी खाली परिणाम दिखाएगी। कृपया नीचे कोड द्वारा पहले खोज पथ देखें।

SHOW SEARCH_PATH

यदि स्कीमा नाम खोज पथ में परिभाषित नहीं है, तो आप खोज पथ को रीसेट कर सकते हैं।

SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME

आप टॉमस के उत्तर में खोज पथ टिप्पणी जोड़ना चाह सकते हैं। मेरे पास यह मुद्दा पहली बार था जब मैंने स्नातकोत्तर विचारों का उपयोग किया था और इसे शोध करना था।
रोब

1

Redshift में दृश्य / तालिका परिभाषा देखने के लिए आप - desc / का उपयोग कर सकते हैं। मैं Redshift के लिए SQL क्लाइंट के रूप में Workbench / J का उपयोग कर रहा हूं और यह परिणाम टैब से सटे संदेश टैब में परिभाषा देता है।


1
उसके लिए धन्यवाद! अभी भी टेबलों को सूचीबद्ध करने का एक तरीका याद नहीं है: /
माधव कैरिलो

1

निम्नलिखित पोस्ट में, मैंने Redshift की TABLE और COLUMN टिप्पणियों को पुनः प्राप्त करने के लिए प्रश्नों का दस्तावेजीकरण किया। https://sqlsylvia.wordpress.com/2017/04/29/redshift-comment-views-documenting-data/

का आनंद लें!

तालिका टिप्पणियाँ

    SELECT n.nspname AS schema_name
     , pg_get_userbyid(c.relowner) AS table_owner
     , c.relname AS table_name
     , CASE WHEN c.relkind = 'v' THEN 'view' ELSE 'table' END 
       AS table_type
     , d.description AS table_description
     FROM pg_class As c
     LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
     LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
     LEFT JOIN pg_description As d 
          ON (d.objoid = c.oid AND d.objsubid = 0)
     WHERE c.relkind IN('r', 'v') AND d.description > ''
     ORDER BY n.nspname, c.relname ;

कॉलम टिप्पणियाँ

    SELECT n.nspname AS schema_name
     , pg_get_userbyid(c.relowner) AS table_owner
     , c.relname AS table_name
     , a.attname AS column_name
     , d.description AS column_description
    FROM pg_class AS c
    INNER JOIN pg_attribute As a ON c.oid = a.attrelid
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
    LEFT JOIN pg_description As d 
     ON (d.objoid = c.oid AND d.objsubid = a.attnum)
    WHERE c.relkind IN('r', 'v')
     AND a.attname NOT         
     IN ('cmax', 'oid', 'cmin', 'deletexid', 'ctid', 'tableoid','xmax', 'xmin', 'insertxid')
    ORDER BY n.nspname, c.relname, a.attname;

0

छोटा रास्ता

सभी तालिका दिखाने के लिए \ d

तालिका का वर्णन करने के लिए \ d टैबलेन

\ _? Redshift के लिए अधिक शॉर्टकट के लिए


-6

आप केवल तालिका का वर्णन करने के लिए नीचे दिए गए आदेश का उपयोग कर सकते हैं।

desc table-name

या

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