PostgreSQLの特定スキーマ内のすべてのテーブルを取得する方法


  1. システムカタログをクエリする方法: PostgreSQLは、データベースのメタデータを格納するシステムカタログを提供しています。以下のクエリを使用すると、指定したスキーマ内のすべてのテーブルを取得できます。

    SELECT table_name
    FROM information_schema.tables
    WHERE table_schema = 'スキーマ名';

    上記のクエリの「スキーマ名」の部分を実際のスキーマ名に置き換えて実行してください。

  2. データベースの反映を使用する方法: 反映(reflection)は、実行中のデータベースの構造をクエリするための便利な方法です。以下のコード例では、Pythonのpsycopg2ライブラリを使用して、指定したスキーマ内のすべてのテーブルを取得しています。

    import psycopg2
    conn = psycopg2.connect(database="データベース名", user="ユーザー名", password="パスワード", host="ホスト名", port="ポート番号")
    cursor = conn.cursor()
    cursor.execute("SELECT table_name FROM information_schema.tables WHERE table_schema = 'スキーマ名';")
    tables = cursor.fetchall()
    for table in tables:
       print(table[0])
    cursor.close()
    conn.close()

    上記のコードの「データベース名」、「ユーザー名」、「パスワード」、「ホスト名」、「ポート番号」、「スキーマ名」の部分を実際の値に置き換えて使用してください。