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

यह जांचने के 5 तरीके कि क्या PostgreSQL में कोई तालिका मौजूद है

PostgreSQL डेटाबेस में तालिका मौजूद है या नहीं, यह जांचने के पांच तरीके नीचे दिए गए हैं।

pg_tables देखें

pg_tables दृश्य में डेटाबेस में प्रत्येक तालिका के बारे में जानकारी होती है।

हम इसका उपयोग यह जांचने के लिए कर सकते हैं कि कोई तालिका वर्तमान डेटाबेस में मौजूद है या नहीं:

SELECT EXISTS (
    SELECT FROM 
        pg_tables
    WHERE 
        schemaname = 'public' AND 
        tablename  = 'actor'
    );

परिणाम:

True

इस मामले में मुझे True मिलता है , जिसका अर्थ है कि तालिका मौजूद है (और मेरे पास इसकी पहुंच है)।

आपके कॉन्फ़िगरेशन के आधार पर, आपको t . मिल सकता है /f True . के बजाय /False

information_schema.tables देखें

information_schema.tables दृश्य में वर्तमान डेटाबेस में परिभाषित सभी तालिकाएँ और दृश्य शामिल हैं जिन तक वर्तमान उपयोगकर्ता की पहुँच है।

हम इसका उपयोग यह जांचने के लिए कर सकते हैं कि क्या दी गई तालिका मौजूद है और हमारे पास उस तक पहुंच है:

SELECT EXISTS (
    SELECT FROM 
        information_schema.tables 
    WHERE 
        table_schema LIKE 'public' AND 
        table_type LIKE 'BASE TABLE' AND
        table_name = 'actor'
    );

परिणाम:

True

इसे करने का दूसरा तरीका यह होगा कि आप गिनती प्राप्त करें:

SELECT 
    COUNT(table_name)
FROM 
    information_schema.tables 
WHERE 
    table_schema LIKE 'public' AND 
    table_type LIKE 'BASE TABLE' AND
	table_name = 'actor';

परिणाम:

1

table_type निम्न में से एक हो सकता है:

BASE TABLE स्थायी आधार तालिका (सामान्य तालिका)
VIEW देखें
FOREIGN विदेशी तालिका
LOCAL TEMPORARY अस्थायी तालिका

आप table_type को छोड़ सकते हैं यदि आप यह जांचना चाहते हैं कि नाम सभी प्रकारों में मौजूद है या नहीं, तो अपने फ़िल्टर से।

सिस्टम कैटलॉग

सिस्टम कैटलॉग वह स्थान है जहां RDBMS स्कीमा मेटाडेटा को संग्रहीत करता है, जैसे टेबल और कॉलम के बारे में जानकारी, और आंतरिक बहीखाता जानकारी।

पोस्टग्रेज में, सिस्टम कैटलॉग नियमित टेबल होते हैं।

दी गई तालिका मौजूद है या नहीं यह जांचने के लिए हम उनमें से दो का उपयोग कर सकते हैं:

SELECT EXISTS (
    SELECT FROM 
        pg_catalog.pg_class c
    JOIN 
        pg_catalog.pg_namespace n ON 
        n.oid = c.relnamespace
    WHERE  
        n.nspname = 'public' AND 
        c.relname = 'actor' AND 
        c.relkind = 'r'
    );

परिणाम:

True

relkind का r साधारण तालिका . के लिए है ।

आप relkind को हटा सकते हैं पूरी तरह से फ़िल्टर करें यदि आप केवल यह जांचना चाहते हैं कि किसी ऑब्जेक्ट में पहले से ही वह नाम है या नहीं जिसे आप किसी तालिका को देना चाहते हैं।

या आप अन्य प्रकार से फ़िल्टर कर सकते हैं।

यहां विकल्प दिए गए हैं:

r साधारण तालिका
i सूचकांक
S अनुक्रम
t टोस्ट तालिका
v देखें
m भौतिक दृश्य
c समग्र प्रकार
f विदेशी तालिका
p विभाजित तालिका
i विभाजित अनुक्रमणिका

to_regclass() समारोह

to_regclass() फंक्शन टेक्स्ट रिलेशन नाम को उसके OID में ट्रांसलेट करता है। यदि नाम मौजूद है, तो OID वापस कर दिया जाता है।

उदाहरण:

SELECT to_regclass('public.actor');

परिणाम:

actor

यदि तालिका मौजूद नहीं है, तो NULL वापस आ जाता है।

regclass में कास्ट करें

regclass . टाइप करने के लिए टेबल का नाम डालना भी संभव है :

SELECT 'public.actor'::regclass

परिणाम:

actor

हालाँकि, यदि तालिका मौजूद नहीं है, तो एक त्रुटि उत्पन्न होती है।

जांचें कि कोई तालिका बनाने से पहले से मौजूद है या नहीं

यदि आपको तालिका बनाने की आवश्यकता है, यदि वह मौजूद नहीं है, तो आप IF NOT EXISTS का उपयोग कर सकते हैं CREATE TABLE का खंड बयान। यदि तालिका मौजूद नहीं है, तो इसे बनाया जाएगा। अगर यह पहले से मौजूद है, तो इसे नहीं बनाया जाएगा।

उदाहरण के लिए केवल तभी तालिका बनाएं जब वह PostgreSQL में मौजूद न हो।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉलम मौजूद नहीं है?

  2. डेटा को सॉर्ट न करें कैसे रखें?

  3. plpgsql चर का उपयोग करके n_distinct सेट करते समय त्रुटि

  4. गतिशील फ़ाइल नाम के साथ कॉपी करें

  5. पोस्टग्रेएसक्यूएल 12:के-निकटतम पड़ोसी अंतरिक्ष विभाजन को लागू करना सामान्यीकृत खोज ट्री इंडेक्स