[PostgreSQL] psql pg_dump으로 덤프하고 새로운 DB에 덤프 적용하기
기존 데이터들을 덤프를 떠야 하는 경우가 종종 있다.
대량의 데이터들을 이용할 때 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