PostgreSQL 팁 모음
목차
모든 테이블 + 컬럼 조회
SELECT TABLE_NAME as 테이블이름, column_name as 컬럼명,
is_nullable as null가능여부,
data_type as 데이터타입,
character_maximum_length as 최대길이,
character_octet_length,
numeric_precision,
numeric_precision_radix,
numeric_scale
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'DB이름'
and table_schema = 'public' -- 혹은 스키마 이름
ORDER BY 테이블이름, ORDINAL_POSITION;GeoServer “ERROR: Cannot find SRID (4326) in spatial_ref_sys”
spatial_ref_sys 테이블에 데이터가 없어서 발생하는 오류.
spatial_ref_sys.csv 파일을 import 하여 해결.
psql CSV로 테이블 추출
\copy 테이블명 to '파일경로/테이블명.csv' with delimiter ',' csv header
\copy (쿼리) to '파일경로/테이블명.csv' with delimiter ',' csv header인덱스 추출
\copy (select * from pg_stat_user_indexes) to '파일경로/pg_stat_user_indexes.csv' with delimiter ',' csv header특정 계정에 읽기 권한 주기
계정 생성
-- 일반 계정
CREATE USER 유저명 WITH PASSWORD '비밀번호';
-- 슈퍼유저 계정
CREATE USER 유저명 PASSWORD '비밀번호' SUPERUSER;계정 권한 수정
# 유저삭제권한
ALTER USER 유저명 WITH ERATEUSER;
# db생성, 복제권한
ALTER USER 유저명 WITH CREATEDB, REPLICATION;자세한 create role 관련 옵션은 요거를 참고하시면 좋습니다. 우리의 도큐먼트 https://postgresql.kr/docs/11/sql-createrole.html
특정 테이블 접근 권한
-- 특정 테이블 읽기 권한
GRANT SELECT ON 테이블이름 TO "user명";
-- 모든 테이블 읽기 권한
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO 유저명;
-- 미래에 추가될 테이블에도 자동으로 읽기 권한 부여
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO 유저명;