আমি কীভাবে সমস্ত ডেটাবেস এবং টেবিলগুলি পিএসকিএল ব্যবহার করে তালিকা করব?


1171

আমি পোস্টগ্রাইএসকিউএল প্রশাসন শিখার চেষ্টা করছি এবং psqlকমান্ড লাইন সরঞ্জামটি কীভাবে ব্যবহার করতে হয় তা শিখতে শুরু করেছি ।

আমি যখন লগ ইন করি তখন psql --username=postgresকীভাবে সমস্ত ডাটাবেস এবং সারণী তালিকাবদ্ধ করব?

আমি চেষ্টা করেছি \d, dএবং dS+কিন্তু কিছুই তালিকাভুক্ত করা হয়। আমি পিজএডমিন III সহ দুটি ডাটাবেস এবং কয়েকটি টেবিল তৈরি করেছি, তাই আমি জানি যে তাদের তালিকাবদ্ধ করা উচিত।


1
আপনি কম্যান্ড লাইনের মাধ্যমে এটি অ্যাক্সেস করতে চান তাহলে, চালানোpsql -l
adriaan

এই মন্তব্যটি অবশ্যই শীর্ষের উত্তরগুলির মধ্যে একটি হওয়া উচিত! আপনার যদি লেখকের দরকার হয় তবে আপনিও পারেন psql --username=postgres -l
ইউলিস বিএন

উত্তর:


1543

নিম্নলিখিত আদেশগুলি নোট করুন:

  • \listবা \l: সমস্ত ডাটাবেস তালিকাভুক্ত করুন
  • \dt: বর্তমান ডাটাবেসে সমস্ত সারণী তালিকাবদ্ধ করুন

আপনি অন্য ডেটাবেজে টেবিলগুলি দেখতে পাবেন না, এই টেবিলগুলি দৃশ্যমান নয়। এর সারণীগুলি (এবং অন্যান্য অবজেক্টস) দেখতে আপনাকে সঠিক ডাটাবেসের সাথে সংযোগ করতে হবে।

ডাটাবেসগুলি স্যুইচ করতে:

\connect database_name অথবা \c database_name

পিএসকিএল সম্পর্কে ম্যানুয়ালটি দেখুন ।


131
আপনি \c db_nameএকটি নির্দিষ্ট ডাটাবেসের সাথে সংযোগ করতে ব্যবহার করতে পারেন ।
ekes

17
\dtবর্তমান ডাটাবেসে সমস্ত টেবিলের তালিকা প্রদর্শন করে না (এটি search_pathকমপক্ষে 9.2 তে পাওয়া যায়নি এমনগুলি বাদ দেয় )
জ্যাক ডগলাস

22
\dt *.আপনার অনুসন্ধানের পথটি পরিবর্তন না করে সমস্ত স্কিমে সমস্ত টেবিল তালিকাবদ্ধ করবে।
ড্যানপেলোটা

19
+ l + আমার প্রিয় - এটি ডিস্কের ব্যবহারও দেখায়।
লেস্টার চেউং

1
উইন্ডোজ আমি এই কমান্ডের সাহায্যে ডাটাবেসগুলি তালিকাভুক্ত করতে পারি psql -U username -lতবে এটি স্ল্যাশ সংস্করণে কাজ করে না।
NoNameProdided

350

এটি ডাটাবেসগুলি তালিকাভুক্ত করে:

SELECT datname FROM pg_database
WHERE datistemplate = false;

এটি বর্তমান ডাটাবেসে সারণী তালিকাবদ্ধ করে

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

11
আপনি ঠিক বলেছেন, তবে প্রশ্নটি পিএসএইচএল-সরঞ্জামের মেটা-কমান্ড সম্পর্কে ছিল। query dt কোনও ক্যোয়ারী টাইপ করার চেয়ে অনেক সহজ।
ফ্রাঙ্ক হিকেন্স

19
আমি মনে করি এটি একটি দুর্দান্ত উত্তর কারণ এটি লিনাক্স কমান্ড লাইন থেকে এক্সিকিউট করা যেতে পারে তার বিপরীতে পিএসকিএল ইন্টারপ্রেটারে থাকা প্রয়োজন যা কখনও কখনও এক্সট্রাপুট্টি ব্যবহার করে আমার জন্য স্তব্ধ হয়ে থাকে।
প্রেম এবং শান্তি - জো কোডসওয়েল

2
আমার দিনও বাঁচিয়েছে। আমার বিশেষ ক্ষেত্রে আমি যুক্ত করছি WHERE table_schema = 'public'কারণ আমি কেবলমাত্র কাস্টম টেবিলগুলি ড্রপ করতে চাই।
রেনরা

29
যদি আপনি -E পতাকাটি দিয়ে পিএসকিএল শুরু করেন, আপনি যখন মেটা-কমান্ড ব্যবহার করবেন তখন এটি আসল ক্যোয়ারী প্রদর্শন করবে।
ডিবেস্টার

এটি একটি ভাল উত্তর। যদিও ওপি মেটাকোমেন্ডস চেয়েছিল, আমি এটির জন্য গুগলিং ছিল এবং এটি আমাকে এই প্রশ্নের দিকে নিয়ে গেছে।
দূরে অ্যাকাউন্ট

109

Postgresql এ এই টার্মিনাল কমান্ডগুলি উপলব্ধ ডাটাবেসগুলির তালিকা দেয়

el@defiant$ /bin/psql -h localhost --username=pgadmin --list

অথবা আদেশটি আরও সহজভাবে বলেছে:

psql -U pgadmin -l

এই কমান্ডগুলি টার্মিনালে এটি মুদ্রণ করে:

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 kurz_prod | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 pgadmin   | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(5 rows)

এগুলি উপলভ্য ডাটাবেস।

পিএসকিউএল-এ এই কমান্ডগুলি উপলব্ধ টেবিলগুলির তালিকা করে

সেই ডাটাবেসে সারণি তালিকাভুক্ত করার আগে আপনাকে একটি ডাটাবেস নির্দিষ্ট করতে হবে।

el@defiant$ psql -U pgadmin -d kurz_prod

এটি আপনাকে একটি পিএসকিএল টার্মিনালে এনেছে:

kurz_prod=#

কমান্ডটি ব্যবহার করুন \dযার অর্থ সমস্ত সারণী, দর্শন এবং ক্রমগুলি প্রদর্শন করুন

kurz_prod=# \d

এই মুদ্রণ:

           List of relations
Schema |  Name   |   Type   |  Owner
--------+---------+----------+---------
public | mytable | table    | pgadmin
public | testing | sequence | pgadmin
(2 rows)

তারপরে, পিএসকিএল টার্মিনাল থেকে বেরিয়ে আসতে লিখুন \qএবং এন্টার টিপুন। বা Ctrl-Dএকই জিনিস করে। এটি সেই ডাটাবেসের সারণী are


4
\ d কেবল সারণি তালিকাভুক্ত করে না:\d[S+] list tables, views, and sequences
জ্যাক ডগলাস

3
আমার কাছে এটি "সঠিক" উত্তর কারণ এটি আপনাকে ইতিমধ্যে একটি বিদ্যমান ডাটাবেসের সাথে সংযুক্ত হওয়ার প্রয়োজন নেই।
আর্দ্বার্ক

71

\lশর্টহ্যান্ডের জন্যও \list। বেশ কয়েকটি স্ল্যাশ কমান্ড রয়েছে, যা ব্যবহার করে আপনি পিএসকিএল-তে তালিকাবদ্ধ করতে পারেন \?


35

ডাটাবেস এবং সারণী তালিকার আরও তথ্য অর্জন করতে, আপনি এটি করতে পারেন:

\l+ ডাটাবেস তালিকা করতে

                                                                    List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description
------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------
 pgbench    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 29 MB   | pg_default |
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 6073 kB | pg_default | default administrative connection database
 slonmaster | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 1401 MB | movespace  |
 slonslave  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 32 MB   | pg_default |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5785 kB | pg_default | unmodifiable empty database
            |          |          |             |             | postgres=CTc/postgres |         |            |
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5985 kB | pg_default | default template for new databases
            |          |          |             |             | postgres=CTc/postgres |         |            |
 test       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 13 MB   | pg_default |
(7 rows)

এবং

\d+ বর্তমান ডাটাবেসে বর্তমান অনুসন্ধান_পথ স্কিমায় সমস্ত সারণী তালিকাবদ্ধ করতে।

test=# \dn+ --list schemas
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description       
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         | 
schema1 | postgres | postgres=UC/postgres+| 
        |          | =UC/postgres         | 
(2 row)

test=# set search_path to schema1, public;
SET
test=# \d+
                                  List of relations
     Schema  |      Name       | Type  |    Owner     |    Size    | Description
    ---------+-----------------+-------+--------------+------------+-------------
     public  | all_units       | table | postgres     | 0 bytes    |
     public  | asset           | table | postgres     | 16 kB      |
     public  | asset_attribute | table | postgres     | 8192 bytes |
     public  | food            | table | postgres     | 48 kB      |
     public  | name_log        | table | postgres     | 8192 bytes |
     public  | outable         | table | ordinaryuser | 0 bytes    |
     public  | outable2        | table | ordinaryuser | 0 bytes    |
     public  | test            | table | postgres     | 16 kB      |
     public  | usr             | table | postgres     | 5008 kB    |
     schema1 | t1              | table | postgres     | 0 bytes    |
    (10 rows)

33

Pg_Admin থেকে আপনি কেবল আপনার বর্তমান ডাটাবেসে নিম্নলিখিতটি চালাতে পারবেন এবং এটি নির্দিষ্ট স্কিমার জন্য সমস্ত টেবিল পাবে:

SELECT * 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' 
    AND table_schema = 'public' 
ORDER BY table_type, table_name

এটি আপনাকে স্থায়ী টেবিলগুলির একটি তালিকা (সাধারণত আপনি যে সারণীগুলির সন্ধান করছেন) পাবেন। আপনি যদি *ওয়াইল্ডকার্ডটি কেবলমাত্রটিতে পরিবর্তন করেন তবে আপনি কেবল সারণির নামগুলি পেতে পারেন table_nametable_schemaআপনার অ্যাডমিন একটি নতুন স্কিমা সেট আপ না করেই বেশিরভাগ ডাটাবেসের জন্য সর্বজনীনই ডিফল্ট স্কিমা।


3
এটি সত্য হলেও, এটি ওপি সম্পর্কে জিজ্ঞাসা করার চেয়ে আলাদা ক্লায়েন্টকে সম্বোধন করে।
dezso

এটি আমার পক্ষে দুর্দান্ত কাজ করেছে, এবং যদিও আমার ব্যবহারের ঘটনাটি ওপি চেয়েছিল ঠিক তেমন নয়, তবে এটি মোড়কের মাধ্যমে সংযুক্ত থাকাকালীন টেবিলের তালিকা পেতে আমাকে সহায়তা করেছিল ( জুলিয়াং লিবিপিকিউজেজেলে )
ভাস

19

সম্ভবত আপনি টেবিলগুলি এমন কোনও স্কিমাতে সন্নিবেশ করেছেন যা আপনার অনুসন্ধানের পথে নেই, বা ডিফল্ট, অর্থাৎ পাবলিক এবং সুতরাং টেবিলগুলি \ dt ব্যবহার করে প্রদর্শিত হবে না। আপনি যদি ডেটা বলে একটি স্কিমা ব্যবহার করেন তবে আপনি এটি চালিয়ে ঠিক করতে পারেন,

alter database <databasename> set search_path=data, public;

প্রস্থান করুন এবং পিএসকিএল পুনরায় প্রবেশ করুন এবং এখন \ dt আপনাকে স্কিমা ডেটাতেও সারণীগুলি প্রদর্শন করবে।


1
আচ্ছা, একটি সরল set search_path=data, public;
কৌশলও

@ ডিজেসো, এটি কি স্থায়ীভাবে পরিবর্তন করে দেয়, বা ঠিক সেই পিএসএলএল সেশনে?
জন পাওয়েল

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