PostgreSQL: PostgreSQL හි වගු පෙන්වන්න


Answers:


2678

සිට psqlවිධාන රේඛා අතුරු

පළමුව, ඔබේ දත්ත සමුදාය තෝරන්න

\c database_name

එවිට, මෙය වත්මන් යෝජනා ක්‍රමයේ ඇති සියලුම වගු පෙන්වයි:

\dt

ක්‍රමලේඛනගතව (හෝ psqlඅතුරු මුහුණතෙන් ද):

SELECT * FROM pg_catalog.pg_tables;

පද්ධති වගු pg_catalogදත්ත ගබඩාවේ ජීවත් වේ .


102
StStephenCorwin No \lයනු show databasesMySQL හි සමාන වේ . dtshow tablesසහ lshow databases
user454322

12
\dtඉතා ප්‍රයෝජනවත් වේ. ඒ pg_catalog.pg_tablesඑක් එය පරිශීලකයන් විසින් නිර්මාණය කරන අය, ඔබ සම්බන්ධ කිරීමට සිදු ඕනෑම දෙයක් දත්ත සමුදාය සඳහා සමග එක්ව අභ්යන්තර වගු එකවර පෙනී ලෙස, ඉතා අඩු නිසා ය.
aroth

33
psql my_db_name\dtවැඩ කිරීම සඳහා ධාවනය කළ යුතුය . මම psqlදත්ත සමුදා නාමයක් නොමැතිව දිව ගිය විට , මට "සම්බන්ධතා හමු
නොවීය

31
පද්ධති වගු නොමැතිව:SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
මැට් වයිට්

39
ඔබ මුලින්ම \c <DATABASE_NAME>ඔබේ දත්ත සමුදාය තෝරා ගත යුතුය.
danio

201

සුපර් යූසර් ලෙස පිවිසෙන්න:

sudo -u postgres psql

ඔබට සියලු දත්ත සමුදායන් සහ පරිශීලකයින් \lවිධාන මඟින් ලැයිස්තු ගත කළ හැකිය (වෙනත් විධානයන් අනුව ලැයිස්තුගත කරන්න \?).

දැන් ඔබට වෙනත් දත්ත සමුදායන් දැකීමට අවශ්‍ය නම් පරිශීලක / දත්ත සමුදාය \cවැනි විධානයන් මඟින් වෙනස් කළ හැකිය \c template1, \c postgres postgresසහ භාවිතා කරන්න \d, \dtහෝ \dSවගු / දර්ශන / යනාදිය බලන්න.


1
සාමාන්‍යයෙන් වඩා එක් දත්ත සමුදායක් ස්ථාපනය කර ඇති බැවින් මෙය වඩා හොඳ පිළිතුරකි.
ජෙරොම්

මෙය ඉතා ප්‍රයෝජනවත් විය. ඔබට ස්තුතියි.
ප්‍රෙස්ටන්ට පොරොන්දු වන්න

124

(සම්පූර්ණත්වය සඳහා)

ඔබට (SQL- සම්මත) තොරතුරු යෝජනා ක්‍රමය විමසිය හැකිය :

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');

3
+1 සම්පූර්ණත්වය සඳහා වුවද, mysql දර්ශන වගු මඟින් පෙන්වන්නේ වර්තමාන ක්‍රමෝපාය පමණි, මේ ආකාරයෙන් සිතීම හොඳය, mysql සතුව ඇත්තේ එක් දත්ත සමුදායක් පමණි, නමුත් බහු ක්‍රමෝපායන් ඇත, එහිදී postgresql හට විකෘති දත්ත සමුදායන් (නාමාවලි) සහ යෝජනා ක්‍රම තිබිය හැකිය. එබැවින් සමාන වගුව_schema = 'DB_NAME' විය යුතුය;
රාහුලි

හරියටම සම්මත වර්ග නොවේ, "||" භාවිතා කළ නොහැක mssql හි නූල් සංයුක්ත කිරීමට
ChRoNoN

123

PostgreSQL හි වගු පෙන්වීමට ඔබට PostgreSQL හි අන්තර්ක්‍රියාකාරී පර්යන්තය Psql භාවිතා කළ හැකිය.

1. Psql ආරම්භ කරන්න

සාමාන්‍යයෙන් ඔබට psql වෙත ඇතුළු වීමට පහත විධානය ක්‍රියාත්මක කළ හැකිය:

psql DBNAME USERNAME

උදාහරණයක් වශයෙන්, psql template1 postgres

ඔබට තිබිය හැකි එක් තත්වයක් නම්: ඔබ root ලෙස පුරනය වී ඇති බව සිතමු, ඔබට දත්ත සමුදායේ නම මතක නැත. ධාවනය කිරීමෙන් ඔබට පළමුව Psql වෙත ඇතුළු විය හැකිය:

sudo -u postgres psql

සමහර පද්ධති වල, sudo විධානය ලබා ගත නොහැක, ඒ වෙනුවට ඔබට පහත විධානයන් ක්‍රියාත්මක කළ හැකිය:

psql -U postgres
psql --username=postgres

2. වගු පෙන්වන්න

දැන් Psql හි ඔබට පහත දැක්වෙන විධානයන් ක්‍රියාත්මක කළ හැකිය:

  1. \? සියලුම විධාන ලැයිස්තුගත කරන්න
  2. \l දත්ත සමුදායන් ලැයිස්තුගත කරන්න
  3. \conninfo වත්මන් සම්බන්ධතාවය පිළිබඳ තොරතුරු පෙන්වන්න
  4. \c [DBNAME] නව දත්ත ගබඩාවට සම්බන්ධ වන්න, උදා. \c template1
  5. \dt පොදු යෝජනා ක්‍රමයේ ලැයිස්තු වගු
  6. \dt <schema-name>.* නිශ්චිත ක්‍රමෝපායන් ලැයිස්තු වගු, උදා. \dt public.*
  7. \dt *.* සියලුම යෝජනා ක්‍රමවල ලැයිස්තු වගු
  8. එවිට ඔබට SQL ප්‍රකාශ ක්‍රියාත්මක කළ හැකිය, උදා: SELECT * FROM my_table;(සටහන: ප්‍රකාශයක් අර්ධ සළකුණෙන් අවසන් කළ යුතුය ;)
  9. \q psql වලින් ඉවත් වන්න

52
  1. Postgres පරිශීලකයා ලෙස පළමු වරට පිවිසෙන්න:

    sudo su - postgres

  2. අවශ්‍ය db වෙත සම්බන්ධ වන්න: psql -d databaseName

  3. \dt ඔබ සම්බන්ධ කර ඇති දත්ත ගබඩාවේ ඇති සියලුම වගු ලැයිස්තුව නැවත ලබා දෙනු ඇත.


40

-E ධජය සමඟ psql ධාවනය කිරීමෙන් අභ්‍යන්තරව භාවිතා කරන විමසුම දෝංකාර දෙයි \ dt සහ ඒ හා සමාන:

sudo -u postgres psql -E

postgres=# \dt       
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name", 
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;        
**************************

1
BTW, TOAST විශාල අගයන් ගබඩා කිරීම සඳහා භාවිතා කරයි: postgresql.org/docs/8.3/static/storage-toast.html
ඩෝරියන්

40

ඔබට සියලු දත්ත සමුදායන් සහ ඒවායේ ක්‍රමෝපායන් පරීක්ෂා කිරීමට හැකි වන පරිදි සුපිරි පරිශීලකයෙකු ලෙස ලොග් වන්න: -

sudo su - postgres

පහත දැක්වෙන විධානය භාවිතා කිරීමෙන් අපට postgresql shell වෙත පිවිසිය හැකිය: -

psql

පහත දැක්වෙන විධානය භාවිතා කිරීමෙන් ඔබට දැන් සියලු දත්ත සමුදා ලැයිස්තුව පරීක්ෂා කළ හැකිය: -

\l

දත්ත සමුදායන්ගේ ප්‍රමාණයන් පරීක්ෂා කිරීමට ඔබ කැමති නම්: -

\l+

qආපසු යාමට ඔබන්න .

ඔබ දැන් ඔබේ දත්ත සමුදාය සොයාගත් පසු පහත දැක්වෙන විධානය භාවිතා කර එම දත්ත ගබඩාවට සම්බන්ධ විය හැකිය: -

\c database_name

සම්බන්ධ වූ පසු ඔබට දත්ත සමුදා වගු හෝ යෝජනා ක්‍රම පරීක්ෂා කළ හැකිය: -

\d

දැන් නැවත ෂෙල් භාවිතය වෙත ආපසු යාමට: -

q

දැන් එක්තරා වගු භාවිතය පිළිබඳ විස්තර තවදුරටත් බැලීමට: -

\d table_name

Postgresql_shell ඔබන්න \q.

ටර්මිනල් ප්‍රෙස් වෙත ආපසු යාමට exit.


24

ඔබට අවශ්‍ය වන්නේ ඔබ විසින් සාදන ලද වගු ලැයිස්තුව පමණක් නම්, ඔබට මෙසේ පැවසිය හැකිය:

\dt

PATTERNපෙන්විය යුතු වගු අභිරුචිකරණය කිරීමට ඔබට උපකාරී වන ඒවා ද අප සතුව ඇත. pg_catalogSchema ඇතුළුව සියල්ල පෙන්වීමට , ඔබට එකතු කළ හැකිය *.

\dt *

ඔබ එසේ කරන්නේ නම්: \?

S dt [S +] [PATTERN] ලැයිස්තු වගු


23

භාවිතා කරන්න වගු පමණක් බලන්න

=> \dt

යෝජනා ක්‍රම වගු බැලීමට අවශ්‍ය නම්

=>\dt+

ඔබට විශේෂිත යෝජනා ක්‍රම වගු බැලීමට අවශ්‍ය නම්

=>\dt schema_name.* 

මම ඔබට වැට්ටවීමට කරන්නේ ලස්සන විශ්වාසයි +සමග S. දෙවැන්න (ලිපිය) යෝජනා ක්‍රම වගු පෙන්වයි. මෙම +සරල අමතර තොරතුරු පෙන්වයි.
ගැරට් විල්සන්

20

පළමුව පහත විධානය භාවිතා කරමින් දත්ත සමුදාය සමඟ සම්බන්ධ වන්න

\c database_name

ඔබ මෙම පණිවිඩය දකිනු ඇත - You are now connected to database database_name. ඔවුන් පහත විධානය ක්‍රියාත්මක කරයි

SELECT * FROM table_name;

දත්ත සමුදායේ සහ වගුවේ නමෙහි ඔබගේ දත්ත සමුදාය සහ වගුවේ නම සමඟ යාවත්කාලීන කරන්න


20
මෙය ප්‍රශ්නයට පිළිතුරු සපයන බව මට විශ්වාස නැත. මම හිතන්නේ OP ඔහුගේ දත්ත ගබඩාවේ ඇති සියලුම වගු දැන ගැනීමට උත්සාහ කරමින් සිටියි, ඔහුගේ දත්ත ගබඩාවේ ඇති විශේෂිත වගුවකින් සියලු පේළි ලබා නොගනී ... හරිද?
ගොදුරු වේ

16

ඔබ PostgreSQL හි pgAdmin4 භාවිතා කරන්නේ නම්, ඔබේ දත්ත ගබඩාවේ වගු පෙන්වීමට ඔබට මෙය භාවිතා කළ හැකිය:

select * from information_schema.tables where table_schema='public';

14

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

නිශ්චිත යෝජනා ක්‍රමයක් තුළ සියලුම වගු ලැයිස්තුගත කිරීමට , මට අවශ්‍ය වූයේ:

1) අපේක්ෂිත දත්ත ගබඩාවට සම්බන්ධ වන්න:

psql mydb

2) විධානයෙන් පසුව මට මේස බැලීමට අවශ්‍ය යෝජනා ක්‍රමයේ නම \dtසඳහන් කරන්න:

\dt myschema.*

මෙය මා උනන්දු වන ප්‍රති results ල පෙන්වයි:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres


8

t dt (අවශ්‍ය නැත *) - ඔබ දැනටමත් සම්බන්ධ කර ඇති දැනට පවතින දත්ත සමුදායක් සඳහා සියලු වගු ලැයිස්තුගත කරයි. සටහන් කිරීමට ද ප්‍රයෝජනවත්:

table d [table_name] - වර්ගීකරණ තොරතුරු, යොමු කිරීම් සහ යතුරු සීමාවන් ඇතුළුව දී ඇති වගුවක් සඳහා සියලු තීරු පෙන්වනු ඇත.


6

වත්මන් දත්ත ගබඩාවේ ඇති වගු ඔබට ලැයිස්තු ගත කළ හැකිය \dt.

Fwiw, MySQL \d tablenameවැනි යමක් ලබා දී ඇති වගුව පිළිබඳ විස්තර පෙන්වනු ඇත show columns from tablename, නමුත් තව ටිකක් තොරතුරු සහිතව.


5

Psql භාවිතා කිරීම : t dt

හෝ:

SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
        AND c.relkind = 'r'
        AND relname NOT LIKE 'pg_%'
ORDER BY 1

3

පළමුවෙන්ම ඔබ ඔබේ දත්ත සමුදාය සමඟ සම්බන්ධ විය යුතුය

මගේ දත්ත සමුදාය උබුන්ටු ය

සම්බන්ධ වීමට මෙම විධානය භාවිතා කරන්න

 \c ubuntu

මෙම පණිවිඩය පෙන්වනු ඇත

"ඔබ දැන්" උබුන්ටු "දත්ත ගබඩාවට" පෝස්ට්ග්‍රෙස් "ලෙස සම්බන්ධ කර ඇත."

දැන්

එහි ඇති සියලුම වගු පෙන්වීමට මෙම විධානය ක්‍රියාත්මක කරන්න

\d+

3

විධාන රේඛාවේ සියලුම වගු ලැයිස්තුගත කිරීමට වඩාත්ම සරල ක්‍රමය නම්, මගේ රසය සඳහා:

psql -a -U <user> -p <port> -h <server> -c "\dt"

දී ඇති දත්ත සමුදායක් සඳහා දත්ත සමුදායේ නම එක් කරන්න:

psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>

එය ලිනක්ස් සහ වින්ඩෝස් යන දෙකෙහිම ක්‍රියා කරයි.


3

ඉක්මන් ඔන්ලයිනර් ලෙස

# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'

හෝ ඔබ වඩාත් පැහැදිලි json ප්‍රතිදානය බහු-ලයිනර් වලට කැමති නම්:

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

1

t dt වගු ලැයිස්තුගත කරනු ඇති අතර වෙනම එකකට මාරු නොවී "et pset pager off" එකම කවුළුව තුළ පෙන්වයි. එම ලක්ෂණය මරණයට ආදරය කරන්න.


1

පළමුව, ඔබට සම්බන්ධ වීමට අවශ්‍ය දත්ත ගබඩාව ඇතුළත් කරන්න

\c database_name

එවිට, මෙය වත්මන් යෝජනා ක්‍රමයේ ඇති සියලුම වගු පෙන්වයි:

\dt


-2

පළමුවෙන්ම ඔබට ඔබගේ postgres දත්ත සමුදාය සමඟ මැක්හි postgre.app භාවිතා කිරීමෙන් හෝ පොස්ටික් භාවිතා කළ හැකිය. පහත විධානය ක්‍රියාත්මක කරන්න:

psql -h localhost -p port_number -d database_name -U user_name -W

ඔබ මුරපදය ඇතුළත් කළ විට, මෙය ඔබගේ දත්ත ගබඩාවට ප්‍රවේශය ලබා දිය යුතුය

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.