Veritabanındaki bir tablodan yalnızca insert ifadeleri almak için pg_dump kullanma


121

PostgreSQL INSERTkullanarak bir veritabanı içindeki belirli bir tablodan tüm satırları ifadeler olarak almanın bir yolunu arıyorum pg_dump.

Örneğin, A tablosuna sahibim ve AI tablosundaki tüm satırların INSERTifadeler olarak ihtiyacı var, ayrıca bu ifadeleri bir dosyaya dökmelidir.

Mümkün mü?

Yanıtlar:


229

sürüm <8.4.0 ise

pg_dump -D -t <table> <database>

Yalnızca INSERT'lerin, CREATE TABLE vb. Olmadan tabloyu ilk etapta kurmasını istiyorsanız, -aönce ekleyin -t.

sürüm> = 8.4.0

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

58
-D ve -D seçenekleri PostgreSQL 8.4'ten kaldırıldı (bkz. 8.4.0 sürüm notları). Şimdi "uzun" adları kullanmalısınız: pg_dump --column-inserts --data-only --table = <table> <database>
Matthew Wood

1
Ancak -d, -ave -tkısa versiyonları hala mevcuttur. PG11 ile kontrol edildi.
demisx

--insertsbaşka bir seçenektir; biraz daha hızlı geri yüklenir ancak sütun sırası değişikliklerine tahammül edemez
Andy

34

Eklerinizi bir .sql dosyasına DUMP etmek istiyorsanız :

  1. cdbulunmasını .sqldosyalamak istediğiniz konuma
  2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

> my_dump.sqlKomutu not edin . Bu, her şeyi my_dump adlı bir sql dosyasına koyacaktır.


2

Bir senaryoya koyduğum gibi böyle bir şey:

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

sadece uzaktan erişim kullanıyorsanız ve tüm veritabanı verilerini dökmek istiyorsanız, şunları kullanabilirsiniz:

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

tüm veritabanı verileriyle bir döküm oluşturacak ve

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

aynı yapıya sahip olduğunuzu düşünerek aynı verileri veri tabanınıza eklemek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.