DB

[PostgreSQL] 특정 컬럼명을 사용하는 모든 테이블 찾는 쿼리

PostgreSQL에서 특정 컬럼명을 사용하는 모든 테이블 찾는 방법은 information_schema.columns 또는 pg_catalog를 사용하면 됩니다.

SELECT 
    table_schema,
    table_name,
    column_name
FROM information_schema.columns
WHERE column_name = '컬럼명'
ORDER BY table_schema, table_name;


대소문자 구분 없이 찾기

SELECT 
    table_schema,
    table_name,
    column_name
FROM information_schema.columns
WHERE LOWER(column_name) = LOWER('user_id')
ORDER BY table_schema, table_name;


특정 스키마만 조회

SELECT 
    table_name,
    column_name
FROM information_schema.columns
WHERE column_name = 'user_id'
  AND table_schema = 'public';


LIKE 검색 (비슷한 컬럼명 찾기)

SELECT 
    table_schema,
    table_name,
    column_name
FROM information_schema.columns
WHERE column_name LIKE '%user%'
ORDER BY table_name;


시스템 카탈로그 (조금 더 빠름 / 고급)

SELECT 
    n.nspname AS schema_name,
    c.relname AS table_name,
    a.attname AS column_name
FROM pg_attribute a
JOIN pg_class c ON a.attrelid = c.oid
JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE a.attname = 'user_id'
  AND c.relkind = 'r'   -- 일반 테이블
  AND a.attnum > 0
  AND NOT a.attisdropped;

Hi, I’m 관리자