본문 바로가기

Tech/Postgresql

(3)
[Postgresql] pg_dumpall 활용 경험 Postgresql DB가 동작중이던 서버가 날아감에 따라...gk.. (replica고 뭐고 딱 DB 하나 떠있었음...) 예전에 백업된 데이터를 다시 import 해야하는 상황이였다. 다행히도 pg_dumpall로 백업해놓은 dump file이 있었다. 이 dump file을 다시 적용했던 경험을 작성하려한다. 환경은 실 서비스에 적용하기 이전에 테스트 용으로 띄워서 테스트했다. (Docker Container) 1. Python Django REST Framework를 사용한 API 서버 2. Postgresql DB Postgresql 서버가 통채로 날아가는 경우를 경험하는건 처음이고, pg_dumpall로 export된 DB 백업 파일을 Import하는 것도 처음이였다. 백업을 진행하기 이전에 ..
Docker로 Postgresql 실행 시, 데이터베이스 자동 생성하기 TODO. Postgresql의 기본이미지를 Docker로 실행하는데, 이때 특정 DB를 생성하려고 한다. Postgresql을 실행할 때, 동작할 init.sql을 생성해준다. init.sql CREATE DATABASE kcs_file; 참고: 삽질... DO $$ BEGIN IF NOT EXISTS(SELECT * FROM pg_database WHERE datname='') THEN CREATE DATABASE ; END IF; END; $$ LANGUAGE PLPGSQL; DB가 존재하는 경우, 존재하지 않는 경우를 따져 생성하려고 위 처럼 만들었는데, CREATE DATABASE cannot be executed from a function or multi-command string에러가 발생..
Postgresql 리스트 데이터 넣기 Sqlalchemy, alembic, Postgresql Json에서 리스트 데이터를 파싱 후, Postgresql에 넣어야 할 일이 생겼다. 리스트 데이터를 Postgresql에 적재하기 위해서는 Postgresql에서 선언한 테이블의 컬럼 타입을 sqlalchemy.ARRAY()로 사용해야한다. 나는 ['A','B','C'] 와 같은 리스트 데이터를 Postgresql에 넣고 싶었고, sqlalchemy.ARRAY(sqlalchemy.TEXT())로 컬럼을 생성했다. PgAdmin에서 만들어진 컬럼을 확인하면, Type이 TEXT[]로 생성된 것을 볼 수 있다. 하지만, 만든 컬럼에 리스트 데이터를 넣게되면, 생각과는 다르게 값이 들어가게 된다. 나는 ['A', 'B', 'C']를 넣었지만, PgAd..