সমস্ত টেবিলের নাম তালিকাভুক্ত করতে পোস্টগ্রিএসকিউএল কোয়েরি?


183

আমার পোস্টগ্রিস ডিবিতে সমস্ত সারণী তালিকাবদ্ধ করার জন্য কি কোনও কোয়েরি রয়েছে?

আমি এর মতো একটি প্রশ্নের চেষ্টা করেছিলাম:

SELECT table_name FROM information_schema.tables
                      WHERE table_schema='public' 

তবে এই ক্যোয়ারীটিও দর্শন দেয়।

আমি কীভাবে কেবলমাত্র টেবিলের নাম পেতে পারি, না দেখানো হয়?

উত্তর:


307

এই প্রশ্নটি ( ম্যানুয়াল থেকে বর্ণনার ভিত্তিতে ) কী ঘটবে ?

SELECT table_name
  FROM information_schema.tables
 WHERE table_schema='public'
   AND table_type='BASE TABLE';

4
এটি এখানে সেরা উত্তর।
টমি

3
টেবিলের ধরণ কী?
ব্রায়ান ব্রাইস

ম্যানুয়াল থেকে টেবিলের ধরণ: টেবিলের ধরণ: অবিরাম বেস টেবিলের জন্য বেস টেবিল (সাধারণ টেবিলের ধরণ), দেখার জন্য ভিউ, বিদেশি টেবিলের জন্য বিদেশ, বা অস্থায়ী টেবিলের জন্য স্থানীয় আঞ্চলিক
tzachs 11:58

37

আপনি যদি ডাটাবেসের তালিকা চান

SELECT datname FROM pg_database WHERE datistemplate = false;

আপনি যদি সমস্ত ডাটাবেসের বর্তমান পিজি ইনস্টলেশন থেকে টেবিলগুলির তালিকা চান

SELECT table_schema,table_name FROM information_schema.tables
ORDER BY table_schema,table_name;

কমপক্ষে Postgres 9.5 এ, এটি সত্য নয়। আমি একটি ক্লাস্টারে 3 টি ডাটাবেস পেয়েছি এবং এটি কেবল বর্তমান ডাটাবেস থেকে সারণীগুলি ফিরিয়ে দিচ্ছে।
sudo

ডকুমেন্টেশন কেবলমাত্র বর্তমানটিকে বলে: postgresql.org/docs/9.5/static/infoschema-tables.html "table_catolog sql_phanfier টেবিল (সর্বদা বর্তমান ডাটাবেস) ধারণকারী ডাটাবেসের নাম"
sudo

27

আপনার পছন্দ মতো ডেটাবেসের সাথে পোস্টগ্রিস টার্মিনালটি খুলুন:

psql dbname (run this line in a terminal)

তারপরে, পোস্টগ্র্রেস পরিবেশে এই কমান্ডটি চালান

\d

এটি নাম অনুসারে সমস্ত সারণী বর্ণনা করবে। মূলত আরোহী নাম অনুসারে সারণীর তালিকা।

তারপরে আপনি ক্ষেত্রগুলি দ্বারা একটি সারণী বর্ণনা করতে চেষ্টা করতে পারেন:

\d tablename.

আশাকরি এটা সাহায্য করবে.


@ উইঞ্জেডপ্যান্থার কীভাবে? সেখানে একটি হয় \dবিকল্প লিস্টে শুধুমাত্র সব টেবিল, কোন সূচক, কোন SeQ সঙ্গে, ...?
পিটার ক্রাউস

5
কি \dtএই জন্য নয়?
thoroc

11

এটা চেষ্টা কর:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema='public' AND table_type='BASE TABLE'

এই এক কাজ করে!


আমি মনে করি না আমাদের দরকার আছে table_type='BASE TABLE'। সম্ভবত আমি ভুল, আপনি দয়া করে বিস্তারিত বলতে পারেন?
এগ্রিগস

কখনও কখনও দরকারী সংযুক্ত ডিবি ফিল্টারিং দরকারী: এবং টেবিল_ক্যাটালগ = কারেন্ট_ডেটাবেস ()
দিয়েগো স্কারাভ্যাগি

8
select 
 relname as table 
from 
 pg_stat_user_tables 
where schemaname = 'public'

select 
  tablename as table 
from 
  pg_tables  
where schemaname = 'public'
  • Pg_tables সম্পর্কে আরও পড়ুন

1
pg_stat_user_tablestrack_activitiesঅক্ষম থাকলে জনবহুল হতে পারে না । "অফিসিয়াল" এপিআই ব্যবহার করা pg_tablesবা information_schema.tableএটি আরও অনেক ভাল পছন্দ।
a_horse_with_no_name


0
SELECT table_name
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema='public';

মাইএসকিউএল এর জন্য আপনার টেবিল_সেমিটি = 'ডিবি নাম' এবং এমএসএসকিউএল-এর জন্য সেই শর্তটি অপসারণ করতে হবে।

লক্ষ্য করুন যে "কেবলমাত্র সেই টেবিলগুলি এবং দর্শনগুলি দেখানো হয়েছে যে বর্তমান ব্যবহারকারীর অ্যাক্সেস রয়েছে"। এছাড়াও, আপনার যদি অনেকগুলি ডাটাবেসে অ্যাক্সেস থাকে এবং ফলাফলটি একটি নির্দিষ্ট ডাটাবেসে সীমাবদ্ধ রাখতে চান, আপনি শর্ত এবং টেবিল_ক্যাটালগ = 'আপনার ডেটাবেস' (পোস্টগ্রিসএসকিউএল) যোগ করে এটি অর্জন করতে পারেন।

আপনি যদি শিরোনামের নাম এবং পাদলেখ সারি গণনা দেখিয়ে শিরোনাম থেকে মুক্তি পেতে চান তবে আপনি পিএসএইচএলটি কমান্ড লাইন বিকল্প -t (কেবলমাত্র -tuples- এর জন্য সংক্ষিপ্ত) দিয়ে শুরু করতে পারেন বা আপনি পিএসএইচএল এর সেটিংটি টগল করতে পারবেন command t দ্বারা কমান্ড লাইন (\ pset tuples_only এর জন্য সংক্ষিপ্ত)। উদাহরণস্বরূপ এটি কার্যকর হতে পারে যখন command g [| কমান্ড] দিয়ে অন্য কমান্ডে আউটপুট পাইপ করা হয়।

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