মাইএসকিউএল ভিউগুলির তালিকা কীভাবে পাবেন?


127

আমি একটি ডাটাবেসে সমস্ত দর্শন তালিকা করার একটি উপায় খুঁজছি।

প্রাথমিকভাবে আমি মাইএসকিউএল ফোরামে একটি উত্তর খুঁজে পেয়েছি এবং চেষ্টা করেছি :

SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';

এটি কখনই কাজ করে না, খালি সেটটি ফিরিয়ে দেয়। (আমি জানি তারা সেখানে আছেন!)

এগুলিও ব্যর্থ:

mysql> use information_schema;
Database changed
mysql> select * from views;
ERROR 1102 (42000): Incorrect database name 'mysql.bak'
mysql> select * from tables;
ERROR 1102 (42000): Incorrect database name 'mysql.bak'

কেন এটি কাজ করছে না?


লিঙ্ক এটি সাহায্য করতে পারে
শশী শেখর বার্নওয়াল

উত্তর:


291

3
আপনি বর্তমানে নির্বাচিত ডিবিতে যদি সন্ধান করেন তবে "আইএন ডাটাবেস_নাম" রেখে দেওয়া সম্ভব।
kraftb

মতামত সম্পর্কে আরও তথ্য পরিপূরক বা পুনরুদ্ধার করতে বিবেচনা করুন: stackoverflow.com/questions/2834016/…
ম্যানুয়েল জর্ডান

27

আপনার দৃষ্টান্তে প্রতিটি ডাটাবেসে সমস্ত দর্শন সন্ধান করার জন্য এখানে একটি উপায় :

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.tables 
WHERE TABLE_TYPE LIKE 'VIEW';

4
আপনি যদি প্রশ্নটি যুক্ত করে প্রশ্নের উত্তর পেতে কোনও নির্দিষ্ট ডাটাবেসে অনুসন্ধান সীমাবদ্ধ করতে চান AND TABLE_SCHEMA LIKE 'database_name'
গ্রুবার

ভিউ সম্পর্কে আরও তথ্য পরিপূরক বা পুনরুদ্ধার করতে বিবেচনা করুন: স্ট্যাকওভারফ্লো
ম্যানুয়েল জর্ডান


7

এটি কাজ করবে।

    USE INFORMATION_SCHEMA;
    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM information_schema.tables
    WHERE TABLE_TYPE LIKE 'VIEW';

2
এটি আরও ভাল, যেহেতু আমি এটিকে কন্টাক্টের সাহায্যে 'তৈরি দেখান' হিসাবে পরিচালনা করতে পারি।
মোশে এল

1
একই উত্তরValerie Parham-Thompson
ম্যানুয়েল জর্ডান

5

করার পরিপূর্ণ একটি নির্দিষ্ট দৃশ্য সম্পর্কে আরও তথ্য পেতে সম্পর্কে

এমনকি দুটি বৈধ উত্তর সহ

SHOW FULL TABLES IN your_db_name WHERE TABLE_TYPE LIKE 'VIEW';

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.TABLES 
WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA LIKE 'your_db_name';

আপনি নিম্নলিখিত প্রয়োগ করতে পারেন (আমার মনে হয় ভাল):

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA LIKE 'your_db_name';

সরাসরি ভাল করে কাজ information_schema.VIEWS(এখন পালন VIEWS বার এবং টেবিল আর), এইভাবে তুমি কি আরও তথ্য, ব্যবহার উদ্ধার করতে পারেন DESC VIEWSআরো বিস্তারিত জানার জন্য:

+----------------------+---------------------------------+------+-----+---------+-------+
| Field                | Type                            | Null | Key | Default | Extra |
+----------------------+---------------------------------+------+-----+---------+-------+
| TABLE_CATALOG        | varchar(64)                     | YES  |     | NULL    |       |
| TABLE_SCHEMA         | varchar(64)                     | YES  |     | NULL    |       |
| TABLE_NAME           | varchar(64)                     | YES  |     | NULL    |       |
| VIEW_DEFINITION      | longtext                        | YES  |     | NULL    |       |
| CHECK_OPTION         | enum('NONE','LOCAL','CASCADED') | YES  |     | NULL    |       |
| IS_UPDATABLE         | enum('NO','YES')                | YES  |     | NULL    |       |
| DEFINER              | varchar(93)                     | YES  |     | NULL    |       |
| SECURITY_TYPE        | varchar(7)                      | YES  |     | NULL    |       |
| CHARACTER_SET_CLIENT | varchar(64)                     | NO   |     | NULL    |       |
| COLLATION_CONNECTION | varchar(64)                     | NO   |     | NULL    |       |
+----------------------+---------------------------------+------+-----+---------+-------+

উদাহরণস্বরূপ VIEW_DEFINITIONক্ষেত্রটি পর্যবেক্ষণ করুন , সুতরাং আপনি ক্রিয়াতে ব্যবহার করতে পারেন:

SELECT TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION 
FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA LIKE 'your_db_name';

অবশ্যই আপনার বিবেচনার জন্য আরও ক্ষেত্র উপলব্ধ।


2

যে চলন্ত চেষ্টা mysql.bakআউট নির্দেশিকা /var/lib/mysqlবলতে /root/বা কিছু। দেখে মনে হচ্ছে যে মাইএসকিএল এটি সন্ধান করছে এবং এটি ERROR 1102 (42000): Incorrect database name 'mysql.bak'ত্রুটির কারণ হতে পারে ।


1

আপনার দেখা ত্রুটিটি সম্ভবত মাইএসকিউএল এর ডেটা ডিরেক্টরিতে একটি মাইএসকিউএল তৈরি ডিরেক্টরি হিসাবে রয়েছে। মাইএসকিউএল ডাটাবেস স্ট্রাকচারকে সরাসরি ফাইল সিস্টেমে ম্যাপ করে, ডাটাবেসগুলি ডিরেক্টরিতে ম্যাপ করা হয় এবং টেবিলগুলি সেই ডিরেক্টরিগুলিতে ফাইল হয়।

অ-কার্যকারী ডাটাবেসের নামটি সন্দেহজনকভাবে দেখায় যে কেউ মাইএসকিএল ডাটাবেস ডিরেক্টরিটি কোনও এক সময়ে ব্যাকআপে অনুলিপি করে মাইএসকিউএলের ডেটা ডিরেক্টরিতে রেখে দিয়েছে। আপনি যতক্ষণ না চেষ্টা করেন এবং কোনও কিছুর জন্য ডাটাবেস ব্যবহার না করেন ততক্ষণ এটি কোনও সমস্যা নয়। দুর্ভাগ্যক্রমে তথ্য স্কিমা সমস্ত ডাটাবেস এটি স্ক্যান করে এটি আবিষ্কার করে যে এটি সত্যিকারের ডাটাবেস নয় এবং বিচলিত হয়।

সমাধানটি হ'ল হার্ডডিস্কে mysql.bak ডিরেক্টরিটি সন্ধান করা এবং এটি মাইএসকিউএল থেকে ভালভাবে সরিয়ে নেওয়া।


0

সমস্ত দেখার জন্য অন্য উপায়:

তথ্য_চেমার কাছ থেকে DISTINCT টেবিলের নাম নির্বাচন করুন T টেবিলগুলি যেখানে টেবিল_ টাইপ = 'দেখুন'


0

আপনি যদি মাইএসকিএল ডাটাবেসে কোনও দৃশ্য তৈরি করেন তবে আপনি আপনার নির্দিষ্ট ডাটাবেসে আপনার সমস্ত টেবিলগুলি দেখতে কেবল এটি দেখতে পাবেন।

লিখুন:

--mysql> SHOW TABLES;

আপনি আপনার ডাটাবেসের সারণী এবং দর্শনের তালিকা দেখতে পাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.