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 में मौजूद न हो।