डेटाबेस में केवल एक तालिका से सम्मिलित विवरण प्राप्त करने के लिए pg_dump का उपयोग करना


121

मैं PostgreSQL INSERTका उपयोग कर एक डेटाबेस के भीतर एक विशिष्ट तालिका से बयान के रूप में सभी पंक्तियों को प्राप्त करने के लिए एक रास्ता खोज रहा हूं pg_dump

उदाहरण के लिए, मेरे पास तालिका ए है और तालिका एआई में सभी पंक्तियों को INSERTबयानों की आवश्यकता है , इसे उन बयानों को एक फ़ाइल में भी डंप करना चाहिए।

क्या यह संभव है?

जवाबों:


229

यदि संस्करण <8.4.0

pg_dump -D -t <table> <database>

जोड़े -aसे पहले -tअगर आप केवल आवेषण चाहते हैं, बिना CREATE TABLE आदि पहली जगह में मेज सेट करने के लिए।

संस्करण> = 8.4.0

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

58
-D और -D विकल्पों को PostgreSQL 8.4 (8.4.0 रिलीज़ नोट देखें) से हटा दिया गया था। अब आपको "लंबे" नामों का उपयोग करना चाहिए: pg_dump --column- आवेषण - data-only --table = <table> <डेटाबेस>
मैथ्यू वुड

1
हालांकि -d, -aऔर, -tलघु संस्करण अभी भी मौजूद हैं। PG11 के साथ जांच की गई।
demisx

--insertsएक और विकल्प है; यह थोड़ा तेजी से पुनर्स्थापित करता है लेकिन स्तंभ क्रम परिवर्तनों को बर्दाश्त नहीं कर सकता
एंडी

34

यदि आप अपनी प्रविष्टि को एक .sql फ़ाइल में डंप करना चाहते हैं :

  1. cdजिस स्थान पर आप .sqlफ़ाइल करना चाहते हैं, वह स्थित है
  2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

नोट नोट करें > my_dump.sql। यह सब कुछ my_dump नामक एक sql फ़ाइल में डाल देगा


2

एक स्क्रिप्ट में मुझे पसंद है कुछ इस तरह से:

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

बस अगर आप रिमोट एक्सेस का उपयोग कर रहे हैं और सभी डेटाबेस डेटा को डंप करना चाहते हैं, तो आप उपयोग कर सकते हैं:

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

अपने डेटा बेस में एक ही डेटा डालने पर विचार करने के लिए आपके पास समान संरचना है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.