Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. List all tables from a specific database

List all tables from a specific database

Scheduled Pinned Locked Moved Database
databasequestionpostgresql
13 Posts 5 Posters 26 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • _ _Flaviu

    How can I list all tables from a specific database in PostGre SQL ? Lets say I have 3 databases, and I have several tables in every one each of them. How can I retrieve the table names for every database I have, using SQL command ? With following command:

    SELECT datname FROM pg_database WHERE datistemplate = false

    I got:
    db_name
    post_flaviu
    postgres
    test

    Now, how can I find all tables under eevry db from above ?

    K Offline
    K Offline
    k5054
    wrote on last edited by
    #4

    You can get Postgres to tell you how to do that using the -E (display hidden queries) option to psql. So for example

    $ psql -E -l
    ********* QUERY **********
    SELECT d.datname as "Name",
    pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
    pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
    d.datcollate as "Collate",
    d.datctype as "Ctype",
    pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
    FROM pg_catalog.pg_database d
    ORDER BY 1;
    **************************

                                  List of databases
    

    Name | Owner | Encoding | Collate | Ctype | Access privileges
    -----------+----------+-----------+-------------+-------------+-----------------------
    template0 | postgres | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =c/postgres +
    | | | | | postgres=CTc/postgres
    template1 | postgres | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =c/postgres +
    | | | | | postgres=CTc/postgres
    test | ebacon | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
    (3 rows)

    Likewise for the \dt command inside psql. Then all you need to do is to figure out how to combine both queries into one. Keep Calm and Carry On

    _ 1 Reply Last reply
    0
    • K k5054

      You can get Postgres to tell you how to do that using the -E (display hidden queries) option to psql. So for example

      $ psql -E -l
      ********* QUERY **********
      SELECT d.datname as "Name",
      pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
      pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
      d.datcollate as "Collate",
      d.datctype as "Ctype",
      pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
      FROM pg_catalog.pg_database d
      ORDER BY 1;
      **************************

                                    List of databases
      

      Name | Owner | Encoding | Collate | Ctype | Access privileges
      -----------+----------+-----------+-------------+-------------+-----------------------
      template0 | postgres | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =c/postgres +
      | | | | | postgres=CTc/postgres
      template1 | postgres | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =c/postgres +
      | | | | | postgres=CTc/postgres
      test | ebacon | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
      (3 rows)

      Likewise for the \dt command inside psql. Then all you need to do is to figure out how to combine both queries into one. Keep Calm and Carry On

      _ Offline
      _ Offline
      _Flaviu
      wrote on last edited by
      #5

      Thank you. That query retrieve all databases. And for all tables from a database only ?

      K 1 Reply Last reply
      0
      • _ _Flaviu

        Thank you. That query retrieve all databases. And for all tables from a database only ?

        K Offline
        K Offline
        k5054
        wrote on last edited by
        #6

        try psql -E test -c "\dt". You can then take that output and combine with the previous one to get a listing of all tables across all databases. Keep Calm and Carry On

        _ 1 Reply Last reply
        0
        • K k5054

          try psql -E test -c "\dt". You can then take that output and combine with the previous one to get a listing of all tables across all databases. Keep Calm and Carry On

          _ Offline
          _ Offline
          _Flaviu
          wrote on last edited by
          #7

          "get a listing of all tables across all databases" That I already did. But doesn't help me, because I need the tables below a specific database, not all tables from all databases.

          L 1 Reply Last reply
          0
          • _ _Flaviu

            "get a listing of all tables across all databases" That I already did. But doesn't help me, because I need the tables below a specific database, not all tables from all databases.

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #8

            PostgreSQL Show Tables[^]

            _ 1 Reply Last reply
            0
            • L Lost User

              PostgreSQL Show Tables[^]

              _ Offline
              _ Offline
              _Flaviu
              wrote on last edited by
              #9

              Thank you Richard. I have tried before, and now, the SQL from that page:

              SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema';

              And as result I got all tables, from ALL databases. Untitled6 — ImgBB[^]

              L 1 Reply Last reply
              0
              • _ _Flaviu

                Thank you Richard. I have tried before, and now, the SQL from that page:

                SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema';

                And as result I got all tables, from ALL databases. Untitled6 — ImgBB[^]

                L Offline
                L Offline
                Lost User
                wrote on last edited by
                #10

                But that is exactly what that command is supposed to do. You need to follow the instructions from the top of the page.

                _ 1 Reply Last reply
                0
                • L Lost User

                  But that is exactly what that command is supposed to do. You need to follow the instructions from the top of the page.

                  _ Offline
                  _ Offline
                  _Flaviu
                  wrote on last edited by
                  #11

                  I am pretty close. And what SQL command should I use to select the database, and after that to call SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' ? I have tried:

                  USE database my_database

                  but seem to not work:

                  ERROR: syntax error at or near "USE";
                  Error while executing the query

                  You know, I need to all this programatically, using SQL commands, not using Postgre tools.

                  L 1 Reply Last reply
                  0
                  • _ _Flaviu

                    I am pretty close. And what SQL command should I use to select the database, and after that to call SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' ? I have tried:

                    USE database my_database

                    but seem to not work:

                    ERROR: syntax error at or near "USE";
                    Error while executing the query

                    You know, I need to all this programatically, using SQL commands, not using Postgre tools.

                    L Offline
                    L Offline
                    Lost User
                    wrote on last edited by
                    #12

                    Sorry, I do not have a system available to test this. However, I do not see any instruction concerning a USE statement in the tutorial on that page.

                    1 Reply Last reply
                    0
                    • _ _Flaviu

                      How can I list all tables from a specific database in PostGre SQL ? Lets say I have 3 databases, and I have several tables in every one each of them. How can I retrieve the table names for every database I have, using SQL command ? With following command:

                      SELECT datname FROM pg_database WHERE datistemplate = false

                      I got:
                      db_name
                      post_flaviu
                      postgres
                      test

                      Now, how can I find all tables under eevry db from above ?

                      S Offline
                      S Offline
                      Sakshi Jain 2022
                      wrote on last edited by
                      #13

                      1. Using SQL Query To show the list of tables with the corresponding schema name, run this statement:

                      SELECT * FROM information_schema.tables;

                      or in a particular schema:

                      SELECT * FROM information_schema.tables WHERE table_schema = 'schema_name';

                      2. Using psql To list all tables: In all schemas:

                      \dt *.*

                      In a particular schema:

                      \dt schema_name.*

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups