Utilizzo di pg_dump per ottenere solo istruzioni di inserimento da una tabella all'interno del database


121

Sto cercando un modo per ottenere tutte le righe come INSERTistruzioni da una tabella specifica all'interno di un database utilizzando pg_dumpPostgreSQL.

Ad esempio, ho la tabella A e tutte le righe nella tabella AI hanno bisogno di INSERT istruzioni, dovrebbe anche scaricare quelle istruzioni in un file.

È possibile?

Risposte:


229

se versione <8.4.0

pg_dump -D -t <table> <database>

Aggiungi -aprima di -tse vuoi solo gli INSERT, senza CREATE TABLE ecc. Per impostare la tabella in primo luogo.

versione> = 8.4.0

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

58
Le opzioni -d e -D sono state rimosse da PostgreSQL 8.4 (vedere le note di rilascio 8.4.0). Ora devi usare i nomi "lunghi": pg_dump --column-inserts --data-only --table = <table> <database>
Matthew Wood

1
Tuttavia -d, le versioni brevi -ae -tsono ancora presenti. Controllato con PG11.
demisx

--insertsè un'altra opzione; ripristina leggermente più velocemente ma non può tollerare le modifiche dell'ordine delle colonne
Andy

34

Se vuoi DUMP i tuoi inserti in un file .sql :

  1. cdnella posizione in cui si desidera .sqlarchiviare
  2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

Nota il > my_dump.sqlcomando. Questo metterà tutto in un file sql chiamato my_dump


2

Metti in una sceneggiatura mi piace qualcosa del genere:

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

nel caso in cui si utilizzi un accesso remoto e si desideri scaricare tutti i dati del database, è possibile utilizzare:

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

creerà un dump con tutti i dati del database e utilizzerà

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

inserire gli stessi dati nella tua banca dati considerando che hai la stessa struttura

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.