[postgresql] pg_dump를 사용하여 데이터베이스 내의 한 테이블에서만 삽입 문을 가져옵니다.

PostgreSQL에서 INSERT사용하는 데이터베이스 내의 특정 테이블에서 모든 행을 명령문 으로 가져 오는 방법을 찾고 pg_dump있습니다.

예를 들어, 테이블 A가 있고 테이블 AI의 모든 행이 INSERT명령문으로 필요 합니다. 또한 해당 명령문을 파일에 덤프해야합니다.

이게 가능해?



답변

버전이 8.4.0 미만인 경우

pg_dump -D -t <table> <database>

처음에 테이블을 설정하는 CREATE TABLE 등없이 INSERT 만 원하는 경우 -a앞에 추가하십시오 -t.

버전> = 8.4.0

pg_dump --column-inserts --data-only --table=<table> <database>


답변

.sql 파일에 삽입을 DUMP하려면 다음을 수행 하십시오.

  1. cd.sql파일을 저장 하려는 위치로
  2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

> my_dump.sql명령에 유의하십시오 . 이것은 모든 것을 my_dump 라는 SQL 파일에 넣습니다.


답변

내가 좋아하는 스크립트에 넣으십시오.

#!/bin/bash
set -o xtrace # remove me after debug
TABLE=charge_unit
DB_NAME=prod_sit_entities_db

BASE_DIR=/var/backups/someDir
LOCATION="${BASE_DIR}/myApp_$(date +%Y%m%d_%H%M%S)"
FNAME="${LOCATION}_${DB_NAME}_${TABLE}.sql"

# Create backups directory if not exists
if [[ ! -e $BASE_DIR ]];then
|       mkdir $BASE_DIR
|       chown -R postgres:postgres $BASE_DIR
fi

sudo -H -u postgres pg_dump --column-inserts --data-only --table=$TABLE $DB_NAME > $FNAME
sudo gzip $FNAME


답변

원격 액세스를 사용하고 모든 데이터베이스 데이터를 덤프하려는 경우 다음을 사용할 수 있습니다.

pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump

모든 데이터베이스 데이터로 덤프를 생성하고

pg_restore -a -h your_host -U your_user -W -Fc your_database < DATA.dump

동일한 구조를 가지고 있다는 것을 고려하여 데이터베이스에 동일한 데이터를 삽입하려면


답변