[python] Psycopg2를 사용하여 데이터베이스 테이블의 데이터를 백업 및 복원하는 방법은?

Python을 사용하여 PostgreSQL 데이터베이스에 연결하는 데에는 다양한 라이브러리가 있지만, Psycopg2는 그 중에서도 가장 널리 사용되는 하나입니다. 이 포스트에서는 Psycopg2를 사용하여 데이터베이스 테이블의 데이터를 백업하고 복원하는 방법을 알아보겠습니다.

데이터 백업

데이터베이스 테이블의 데이터를 백업하는 방법은 다음과 같습니다.

import psycopg2
import datetime

# PostgreSQL 연결 정보
conn = psycopg2.connect(
    host="your_host",
    database="your_database",
    user="your_user",
    password="your_password"
)

# 백업할 테이블 이름
table_name = "your_table"

# 백업 파일 이름 생성
backup_file_name = f"{table_name}_backup_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.sql"

# 백업 SQL 쿼리 생성
backup_query = f"COPY {table_name} TO '{backup_file_name}' DELIMITER ',' CSV HEADER;"

# 쿼리 실행
cur = conn.cursor()
cur.execute(backup_query)
cur.close()

# 연결 종료
conn.close()

위 코드에서는 psycopg2 모듈을 사용하여 PostgreSQL 데이터베이스에 연결합니다. 그런 다음, 백업할 테이블 이름과 백업 파일 이름을 생성하고, COPY 명령을 사용하여 백업 SQL 쿼리를 생성합니다. 이후, 쿼리를 실행하고 연결을 종료합니다. 데이터는 CSV 형식으로 저장되며, 첫 번째 행은 헤더입니다.

데이터 복원

데이터베이스 테이블의 데이터를 복원하는 방법은 다음과 같습니다.

import psycopg2

# PostgreSQL 연결 정보
conn = psycopg2.connect(
    host="your_host",
    database="your_database",
    user="your_user",
    password="your_password"
)

# 복원할 테이블 이름
table_name = "your_table"

# 복원할 파일 이름
restore_file_name = "your_backup_file.sql"

# 복원 SQL 쿼리 생성
restore_query = f"COPY {table_name} FROM '{restore_file_name}' DELIMITER ',' CSV HEADER;"

# 쿼리 실행
cur = conn.cursor()
cur.execute(restore_query)
cur.close()

# 연결 종료
conn.close()

위 코드에서는 psycopg2 모듈을 사용하여 PostgreSQL 데이터베이스에 연결하고, 복원할 테이블 이름과 복원할 파일 이름을 지정합니다. 이후, COPY 명령을 사용하여 복원 SQL 쿼리를 생성하고 실행합니다. 데이터는 CSV 형식으로 저장되며, 첫 번째 행은 헤더입니다.

결론

Psycopg2를 사용하여 PostgreSQL 데이터베이스의 테이블 데이터를 백업하고 복원하는 방법을 알아보았습니다. 이러한 기능을 활용하면 데이터의 안정성과 보안을 유지하면서 중요한 데이터를 보관하고 복구할 수 있습니다.

참고: Psycopg2 공식 문서