개발/SQL

[PostgreSQL] psql pg_dump으로 덤프하고 새로운 DB에 덤프 적용하기

개발자 솜 2022. 4. 12. 15:35

기존 데이터들을 덤프를 떠야 하는 경우가 종종 있다.

대량의 데이터들을 이용할 때 HeidiSQL을 사용하면 도중에 데이터가 유실되거나 뻑날 수 있어서

cmd를 이용한 psql을 사용한다.

 

전제 조건

PostgreSQL을 설치

환경변수를 설정


일단 접속 방법부터 알아보자.

 

postgres 계정과 해당 데이터베이스에 접속

postgres 계정 접속하기

psql -U postgres

 

cmd에서 해당 명령어를 입력한다. 계정 안에 있으면 데이터베이스 목록들을 볼 수 있다.

 

\l 또는 \list

 

데이터베이스에 접속하기

psql -U postgres -d "데이터베이스명"

psql -U postgres -d "DB"

 

데이터베이스 안으로 들어오면 쿼리문을 작성하거나 테이블 목록들을 볼 수 있다. 

 

\dt

 

또한 해당 명령어를 사용하면 테이블 목록을 볼 수있다.

 

이제 덤프를 수행한 뒤, 새로운 데이터베이스에 덤프한 테이블들을 넣어보겠다.


추출할 데이터베이스에서 덤프

 

먼저 cmd창을 켜고 저장할 위치로 이동한다. 

cd C:\Users\Desktop\tmp

 

나같은 경우엔 tmp밑으로 이동했다.

 

데이터베이스에 있는 테이블, 필드 전부 덤프 (필드 O)

pg_dump -U postgres -d "데이터베이스명" > 저장할 파일명.sql

pg_dump -U postgres -d "DB" > studnets_back.sql

 

tmp 밑으로 이동해보면 students_back.sql 이라는 이름이 파일이 저장되어있다.

 

데이터베이스에 있는 테이블 구조만 덤프 (필드 X)

pg_dump -U postgres -s -d "데이터베이스명" > 저장할 파일명.sql

pg_dump -U postgres -s -d "DB" > DB_table_back.sql

 

테이블 구조만 덤프하였다.

 

지정한 테이블 덤프 (필드 O)

pg_dump -U postgres -d "데이터베이스명" -t  "테이블명" > 저장할 파일명.sql

pg_dump -U postgres -d "DB" -t  "students" > students_back.sql

 

지정한 테이블 구조만 덤프 (필드 X)

pg_dump -U postgres -s -d "데이터베이스명" -t  "테이블명" > 저장할 파일명.sql

pg_dump -U postgres -s -d "DB" -t  "students" > students_back.sql

 


새로운 데이터베이스에 덤프 파일 넣기

데이터 베이스 만들기 

psql -U postgres
CREATE DATABASE "STUDENTS";

 

일단 postgres로 접속한뒤 DB 생성 키워드를 사용한다.

데이터베이스명을 큰따옴표로 감싸면 대문자로 생성되고. 큰따옴표로 감싸지 않으면 소문자 DB가 생성된다.

 

데이터 베이스 드랍하기

psql -U postgres
DROP DATABASE "STUDENTS";

 

데이터베이스가 존재한다면 드랍한뒤 생성한다.

 

데이터베이스를 만들었으니 해당 데이터베이스에 테이블을 넣을 수 있다. 

덤프한 .sql문들을 테이블을 넣어보겠다.

 

파일이 저장되어 있는 위치로 이동

cd C:\Users\krsoftGE63\Desktop\tmp

 

.sql 파일 해당 데이터베이스에 넣기

psql -U postgres -d "데이터베이스명 -f 저장할 파일명.sql

psql -U postgres -d "DB" -f student_back.sql

쿼리문 실행하기

Select 문

psql -U postgres -d "DB"

SELECT * FROM students;

 

해당 데이터베이스 안에서 실행해야 한다.

세미콜론을 꼭 작성해야 한다.

 

ALTER - 컬럼 추가시

psql -U postgres -d "DB"

ALTER TABLE 테이블명 ADD COLUMN 추가할 컬럼명 타입; 
ALTER TABLE students ADD COLUMN phone VARCHAR(50) DEFAULT '0';

 

디폴트 값은 생략 가능하다.

 


Reference

https://www.devkuma.com/docs/postgresql/%EB%B0%B1%EC%97%85-pgdump/

 

PostgreSQL | 터미널 명령어 모음 | 백업(pg_dump)

도움말 표시 $ pg_dump --help pg_dump 프로그램은 데이터베이스를 텍스트 파일 또는 기타 다른 형태의 파일로 덤프합니다. 사용법: pg_dump [옵션]... [DB이름] 일반 옵션들: -f, --file=FILENAME 출력 파일 이름

www.devkuma.com