source

pg_dump를 사용하여 데이터베이스 내의 한 테이블에서만 삽입문 가져오기

lovecheck 2023. 6. 1. 22:49
반응형

pg_dump를 사용하여 데이터베이스 내의 한 테이블에서만 삽입문 가져오기

나는 모든 행을 다음과 같이 얻을 수 있는 방법을 찾고 있습니다.INSERT데이터베이스 내의 하나의 특정 테이블의 문 사용pg_dump포스트그레에서.SQL.

예: 테이블 A와 테이블 A의 모든 행이 필요합니다.INSERT명령문을 파일에 덤프해야 합니다.

이것이 가능합니까?

버전이 8.4.0 미만인 경우

pg_dump -D -t <table> <database>

더하다-a이전에-t테이블을 설정하는 CREATE TABLE 등을 제외하고 INSERT만 원하는 경우.

버전 >= 8.4.0

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

삽입물을 .sql 파일에 덤프하려는 경우:

  1. cd원하는 위치로 이동합니다..sql찾을 파일
  2. 다음 명령을 실행합니다. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

참고:> my_dump.sql이 명령의 일부는 my_sql이라는 이름의 .sql 파일에 모든 것을 넣을 것입니다.

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

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

동일한 구조를 가진 경우 데이터베이스에 동일한 데이터를 삽입합니다.

대본에 내가 좋아하는 그런 것을 넣으시오:

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

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

포스트그로스 12의 경우, 이것은 나에게 효과가 있었습니다.

pg_dump -d <database> -t <table> > DATA.dump

언급URL : https://stackoverflow.com/questions/2857989/using-pg-dump-to-only-get-insert-statements-from-one-table-within-database

반응형