web-dev-qa-db-fra.com

Utilisation de pg_dump pour obtenir uniquement les instructions d'insertion d'une table de la base de données

Je cherche un moyen d'obtenir toutes les lignes sous forme d'instructions INSERT à partir d'une table spécifique d'une base de données à l'aide de pg_dump dans PostgreSQL.

Par exemple, j'ai la table A et toutes les lignes de la table A dont j'ai besoin en tant qu'énoncés INSERT, il doit également vider ces instructions dans un fichier.

Est-ce possible?

101
Roland

si version <8.4.0

pg_dump -D -t <table> <database>

Ajouter -a avant le -t _ si vous voulez que les INSERT, sans CREATE TABLE, etc., définissent la table en premier lieu.

version> = 8.4.0

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

Si vous voulez vider vos insertions dans un fichier . Sql:

  1. cd à l'emplacement que vous souhaitez .sql fichier à localiser
  2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

Noter la > my_dump.sql commande. Cela mettra tout dans un fichier SQL nommé my_dump

28
James111

Mettre dans un script j'aime quelque chose comme ça:

#!/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
1
Pipo

juste au cas où vous utilisez un accès distant et que vous voulez vider toutes les données de la base de données, vous pouvez utiliser:

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

il créera un dump avec toutes les données de la base de données et utilisera

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

insérer les mêmes données dans votre base de données en considérant que vous avez la même structure

0
Lenon Tolfo