Psql භාවිතා කර සියලුම දත්ත සමුදායන් සහ වගු ලැයිස්තුගත කරන්නේ කෙසේද?


1249

මම PostgreSQL පරිපාලනය ඉගෙන ගැනීමට උත්සාහ කරන අතර psqlවිධාන රේඛා මෙවලම භාවිතා කරන්නේ කෙසේදැයි ඉගෙන ගැනීමට පටන් ගතිමි .

මම ලොග් වූ විට psql --username=postgres, සියලු දත්ත සමුදායන් සහ වගු ලැයිස්තුගත කරන්නේ කෙසේද?

මම උත්සාහ කර තිබේ \d, dහා dS+කිසිවක් නොව ලැයිස්තුගත කර ඇත. මම pgAdmin III සමඟ දත්ත සමුදායන් දෙකක් සහ වගු කිහිපයක් නිර්මාණය කර ඇත්තෙමි, එබැවින් ඒවා ලැයිස්තුගත කළ යුතු බව මම දනිමි.


3
ඔබට එය විධාන රේඛාව හරහා ප්‍රවේශ වීමට අවශ්‍ය නම් ධාවනය කරන්නpsql -l
adriaan

මෙම ප්‍රකාශය අනිවාර්යයෙන්ම ඉහළම පිළිතුරු වලින් එකක් විය යුතුය! ඔබට සත්‍යාපනය අවශ්‍ය නම් ඔබටත් පුළුවන් psql --username=postgres -l.
යුලිස් බීඑන්

Answers:


1647

කරුණාකර පහත විධානයන් සටහන් කරන්න:

  • \list හෝ \l : සියලුම දත්ත සමුදායන් ලැයිස්තුගත කරන්න
  • \dt: ඔබගේ භාවිතා කරමින් වත්මන් දත්ත ගබඩාවේ ඇති සියලුම වගු ලැයිස්තුගත කරන්න search_path
  • \dt *.: ඔබගේ දත්ත නොසලකා වර්තමාන දත්ත ගබඩාවේ සියලුම වගු ලැයිස්තුගත කරන්න search_path

ඔබ කිසි විටෙකත් වෙනත් දත්ත සමුදායන්හි වගු නොදකිනු ඇත, මෙම වගු නොපෙනේ. එහි වගු (සහ වෙනත් වස්තු) බැලීමට ඔබ නිවැරදි දත්ත ගබඩාවට සම්බන්ධ විය යුතුය.

දත්ත සමුදායන් මාරු කිරීමට:

\connect database_name හෝ \c database_name

ගැන අත්පොත බලන්න පද්දතියේ psql .


136
ඔබට \c db_nameයම් දත්ත සමුදායකට සම්බන්ධ වීමට භාවිතා කළ හැකිය .
eikes

17
\dtවත්මන් දත්ත සමුදායේ ඇති සියලුම වගු ලැයිස්තුගත කර ඇති බවක් නොපෙනේ ( search_pathඅවම වශයෙන් 9.2 හි සොයාගත නොහැකි ඒවා බැහැර කරන බවක් පෙනේ )
ජැක් පවසන්නේ topanswers.xyz

23
\dt *.ඔබගේ සෙවුම් මාර්ගය වෙනස් නොකර, සියලු ක්‍රමලේඛවල සියලුම වගු ලැයිස්තුගත කරයි.
danpelota

21
\ l + මගේ ප්‍රියතමයි - එය තැටි භාවිතයද පෙන්වයි.
ලෙස්ටර් චියුන්ග්

1
වින්ඩෝස් හි මට මෙම විධානය සමඟ දත්ත සමුදායන් ලැයිස්තුගත කළ හැකි psql -U username -lනමුත් එය කප්පාදු අනුවාදය සමඟ ක්‍රියා නොකරයි.
NoNameProvided

383

මෙය දත්ත සමුදායන් ලැයිස්තුගත කරයි:

SELECT datname FROM pg_database
WHERE datistemplate = false;

මෙය වත්මන් දත්ත ගබඩාවේ වගු ලැයිස්තුගත කරයි

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

12
ඔබ හරි, නමුත් ප්‍රශ්නය වූයේ psql- මෙවලමෙහි මෙටා-විධාන ගැන ය. ඕනෑම විමසුමක් ටයිප් කිරීමට වඩා t dt පහසුය.
ෆ්‍රෑන්ක් හයිකන්ස්

21
මම සිතන්නේ මෙය විශිෂ්ට පිළිතුරක් වන බැවින් එය ලිනක්ස් විධාන රේඛාවකින් ක්‍රියාත්මක කළ හැකි බැවින් එය psql පරිවර්තකයේ තිබිය යුතු යැයි සිතනවාට වඩා සමහර විට ExtraPutty භාවිතා කරමින් මා වෙනුවෙන් රැඳී සිටියි.
ආදරය හා සාමය - ජෝ කෝඩ්ස්වෙල්

2
මගේ දවසත් ඉතිරි කළා. මගේ විශේෂ අවස්ථාව සඳහා මම එකතු WHERE table_schema = 'public'කරන්නේ මට අභිරුචි වගු අතහැර දැමීමට අවශ්‍ය නිසාය.
රෙන්රා

31
ඔබ -E ධජය සමඟ psql ආරම්භ කරන්නේ නම්, ඔබ මෙටා-විධානයක් භාවිතා කරන විට එය සත්‍ය විමසුම පෙන්වනු ඇත.
ඩීබ්ස්ටර්

1
*** මන්ද එය ලිනක්ස් විධාන රේඛාවකින් හෝ බාෂ් බහු ලයිනර් එකකින් ක්‍රියාත්මක කළ හැකි බැවිනි:IFS='' read -r -d '' sql_code <<"EOF_CODE" select array_to_json(array_agg(row_to_json(t))) from ( SELECT table_catalog,table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name ) t \ EOF_CODE psql -d postgres -t -q -c "$sql_code"|jq
යොර්ඩන් ජෝර්ජිව්

112

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)

ලබා ගත හැකි දත්ත සමුදායන් මේවාය.

PSQL හි මෙම විධානයන් ලබා ගත හැකි වගු ලැයිස්තුගත කරයි

ඔබට එම දත්ත ගබඩාවේ වගු ලැයිස්තුගත කිරීමට පෙර දත්ත සමුදායක් නියම කළ යුතුය.

el@defiant$ psql -U pgadmin -d kurz_prod

මෙය ඔබව psql පර්යන්තයකට ගෙන එයි:

kurz_prod=#

\dසියලු වගු, දර්ශන සහ අනුපිළිවෙල පෙන්වන්න යන විධානය භාවිතා කරන්න

kurz_prod=# \d

මෙය මුද්‍රණය කරයි:

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

ඉන්පසු, psql පර්යන්තයෙන් පිටවීමට, ටයිප් \qකර enter ඔබන්න. නැත්නම් Ctrl-Dඑකම දේ කරයි. එම දත්ත ගබඩාවේ ඇති වගු මේවාය.


4
\d[S+] list tables, views, and sequences
table

3
මට නම්, මෙය "නිවැරදි" පිළිතුර වන්නේ ඔබ දැනටමත් පවතින දත්ත ගබඩාවකට සම්බන්ධ වීමට අවශ්‍ය නොවන බැවිනි.
aardvarkk

74

\lසඳහා ද කෙටිමං වේ \list. කප්පාදු විධාන කිහිපයක් තිබේ, ඒවා භාවිතා කිරීමෙන් ඔබට psql හි ලැයිස්තු ගත කළ හැකිය \?.


36

දත්ත සමුදාය සහ වගු ලැයිස්තුව පිළිබඳ වැඩි විස්තර ලබා ගැනීම සඳහා ඔබට කළ හැක්කේ:

\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)

34

Pg_Admin වෙතින් ඔබට ඔබගේ වර්තමාන දත්ත ගබඩාවේ පහත සඳහන් දෑ සරලව ක්‍රියාත්මක කළ හැකි අතර එමඟින් නිශ්චිත යෝජනා ක්‍රමය සඳහා සියලු වගු ලැබෙනු ඇත:

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

මෙය ඔබට සියලු ස්ථිර වගු ලැයිස්තුවක් ලබා දෙනු ඇත (සාමාන්‍යයෙන් ඔබ සොයන වගු). ඔබ *ආදේශක කාඩ්පත යන්තම් ලෙස වෙනස් කළහොත් ඔබට මේස නාම පමණක් ලබා ගත හැකිය table_name. table_schemaඔබගේ පරිපාලක විසින් නව යෝජනා ක්‍රමයක් සකසා නොමැති නම් බොහෝ දත්ත සමුදායන් සඳහා වන සුපුරුදු යෝජනා ක්‍රමය පොදු වේ.


3
මෙය සත්‍යයක් වන අතර, මෙය OP විමසීමට වඩා වෙනස් සේවාදායකයකු අමතයි.
ඩෙසෝ

මෙය මට බෙහෙවින් ඉවහල් වූ අතර, මගේ භාවිත නඩුව OP ඉල්ලා සිටි දේ හරියටම නොවුනත්, එතීෙම් හරහා සම්බන්ධ වන අතරතුර ( ජුලියාලැන්ග් LibPQ.jl හි ) මේස ලැයිස්තුව ලබා ගැනීමට එය මට උදව් විය
වාස්

19

ඔබගේ සෙවුම් මාවතේ නැති ක්‍රමලේඛයකට ඔබ වගු ඇතුළත් කර ඇති බව හෝ පෙරනිමිය, එනම් පොදු, එබැවින් වගු \ dt භාවිතයෙන් නොපෙන්වයි. ඔබ දත්ත යනුවෙන් හැඳින්වෙන යෝජනා ක්‍රමයක් භාවිතා කරන්නේ නම්, ධාවනය කිරීමෙන් ඔබට මෙය නිවැරදි කළ හැකිය,

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

Psql වෙතින් පිටව ගොස් නැවත ඇතුල් කරන්න, දැන් ක්‍රමලේඛ දත්තවල වගු ද පෙන්වනු ඇත.


1
හොඳයි, සරල set search_path=data, public;
අයද

@dezso, එම වෙනස ස්ථිරවම සිදු කරයිද, නැතහොත් එම psql සැසියේදීද?
ජෝන් පවෙල්

වැරදියි, මම එතරම් පැහැදිලි නැහැ. ලොග්අවුට්-පිවිසුම් චක්‍රය වෙනුවට එය අදහස් කරන ලදි.
dezso
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.