मुझे यह जांचने की आवश्यकता है कि एक SQL क्वेरी का उपयोग कर डेटाबेस पूरी तरह खाली है (कोई टेबल नहीं)। यह कैसे किया जा सकता है?एसक्यूएल यह जांचने के लिए कि क्या डेटाबेस खाली है (कोई टेबल नहीं)
सहायता के लिए धन्यवाद!
मुझे यह जांचने की आवश्यकता है कि एक SQL क्वेरी का उपयोग कर डेटाबेस पूरी तरह खाली है (कोई टेबल नहीं)। यह कैसे किया जा सकता है?एसक्यूएल यह जांचने के लिए कि क्या डेटाबेस खाली है (कोई टेबल नहीं)
सहायता के लिए धन्यवाद!
SELECT COUNT(DISTINCT `table_name`) FROM `information_schema`.`columns` WHERE `table_schema` = 'your_db_name'
आपके डीबी में तालिकाओं (या विचारों) की वास्तविक संख्या लौटाएगा। यदि वह संख्या 0 है, तो कोई टेबल नहीं है।
इससे विचारों की संख्या भी वापस आ जाएगी। – longneck
लेकिन यदि वह संख्या 0 से अधिक है? शायद कोई टेबल नहीं है, लेकिन विचार हैं? –
@AlexKuznetsov हाँ, लेकिन मुझे विश्वास नहीं है कि आप इसे आधार के आधार पर बिना किसी टेबल के दृश्य देख सकते हैं? – MiffTheFox
select count(*)
from information_schema.tables
where table_type = 'BASE TABLE'
and table_schema = 'your_database_name_here'
हम्म, मुझे लगता है कि इस एसक्यूएल में कुछ गड़बड़ है। मैं MySQL का उपयोग कर रहा हूं और इसमें डेटाबेस के साथ डेटाबेस प्राप्त कर रहा हूं। – EdanB
आप सही हैं। इसके बजाय 'टेबल' होना चाहिए 'आधार तालिका'। – longneck
यह मेरे लिए अच्छी तरह से काम: लेकिन मैं शायद ही पहले कैसे कॉल करने के लिए मैं परिणाम लिखा पाया = cmd.ExecuteNonQuery जो रिटर्न -1 तब के बाद मैं परिणाम नहीं मिला = int.Parse (। Cmd.ExecuteScalar() ToString()) ; यदि कोई तालिका नहीं है तो शून्य लौटाता है। –
"info_schema.tables से * चुनें" आपको अधिकांश डेटाबेस पर तालिकाओं की एक सूची देगा।
आप SQL सर्वर 2005 या अधिक से अधिक है, तो आप प्रणाली दृश्यों में से एक का उपयोग कर सकते मौजूदा डाटाबेस के लिए इस हासिल करने के लिए उपयोग कर रहे हैं:
select Count(*)
from sys.tables
where [type] = 'U'
SQLServer कार्यान्वयन:
USE database_name
SELECT COUNT(*) from information_schema.tables
WHERE table_type = 'base table'
ओरेकल में: चयन गणना (*) user_tables
से मैं कुछ है कि मुझे बैश में उपयोग करने के लिए एक निकास कोड देना होगा की जरूरत है। यह @ लांगनेक के ठोस उत्तर से बना है। यदि डेटाबेस में टेबल हैं, तो select
कथन contents
कॉलम को "टेबल है" के रूप में सेट करेगा। इस मामले में Grep एक सफल 0
लौटाएगा, अन्यथा यह एक गैर-शून्य लौटाएगा।
#!/bin/bash
user=username
pw=passwd
db=database
mysql -u ${user} -p"${pw}" -D ${db} --execute="SELECT CASE COUNT(*) WHEN '0' THEN 'empty database' ELSE 'has tables' END AS contents FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = '${db}';" | grep 'has tables'
echo $?
MySQL में तालिकाओं के बिना सभी डेटाबेस की एक सूची प्राप्त करने के लिए:
use information_schema
select schema_name from `schemata` s
left join `tables` t on s.schema_name = t.table_schema
where t.table_name is null
;
चीयर्स, ईसाई
यदि आप सभी खाली डेटाबेस प्राप्त करना चाहते हैं तो यह बिल्कुल सही तरीका है। धन्यवाद @ क्रिस्टियन! –
बैश में:
db_name='my_db'
mysql -s --skip-column-names -e "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '$db_name'"
मुमकिन है, क्या आपका मतलब है 'नहीं उपयोगकर्ता परिभाषित टेबल कैटलॉग या विचार 'सिस्टम कैटलॉग मौजूद होगा। –