PostgreSQL 한방 쿼리

싱하·2024년 7월 23일
0

postgre

목록 보기
4/4
얘는 왜 한방쿼리가 없냐;

Oracle은

Select '메세지'||column_name||'~~~;' 
from Table 
where 조건1, 조건2;

주면 한방쿼리가 잘 나온다.
정말 편한데...요즘들어 PostgreSQL이 내 업무에 추가가 많이 됐다...

근데 하다가 실수로 postgres계정으로 테이블을 다 생성해버려서 owner가 다 틀려졌다...
이거 언제 다 바꾸지..?

알아보다가 결국 PostgreSQL 엔지니어의 도움을 받아 쿼리를 알게되었다.

DO
$do$
DECLARE
	r RECORD;
BEGIN
	FOR r IN select tablename from pg_tables where schemaname='public'
    LOOP
    	EXECUTE 'ALTER TABLE '||quote_ident('public')||'.'||quote_ident(r.tablename)||' owner to [바꿀 owner];';
    END LOOP;
END
$do$;

위 쿼리를 실행하면 원했던 스키마 내의 테이블 owner를 원하는 owner로 싹 한번에 바꿀 수가 있다.

주의

FOR 절에 있는 select를 진행해본 후 대상 테이블이 맞는지 검토 후 실행할것.

응용

Sequence usage 부여

DO
$do$
DECLARE
	r RECORD;
BEGIN
	FOR r IN select sequencename from pg_sequences where sequenceowner='[owner]'
    LOOP
    	EXECUTE 'grant usage on '||quote_ident('public')||'.'||quote_ident(r.sequencename)||' to [owner];';
    END LOOP;
END
$do$;

위 쿼리는 해당 DB업그레이드 후에 Sequence에 대한 usage권한이 같이 안가서 에러가 발생했었고 이것을 해결하려고 사용했음~

실행되는 쿼리를 직접 찍고싶다면

EXECUTE -> RAISE NOTICE로 바꾸면 해결!!

profile
끄적끄적...

0개의 댓글

관련 채용 정보