ฉันกำลังมองหาวิธีรับแถวทั้งหมดเป็นINSERT
คำสั่งจากตารางเฉพาะหนึ่งตารางภายในฐานข้อมูลโดยใช้pg_dump
ใน PostgreSQL
เช่นฉันมีตาราง A และแถวทั้งหมดในตาราง AI ต้องการเป็นINSERT
คำสั่งก็ควรถ่ายโอนข้อความเหล่านั้นไปยังไฟล์ด้วย
เป็นไปได้หรือไม่
ฉันกำลังมองหาวิธีรับแถวทั้งหมดเป็นINSERT
คำสั่งจากตารางเฉพาะหนึ่งตารางภายในฐานข้อมูลโดยใช้pg_dump
ใน PostgreSQL
เช่นฉันมีตาราง A และแถวทั้งหมดในตาราง AI ต้องการเป็นINSERT
คำสั่งก็ควรถ่ายโอนข้อความเหล่านั้นไปยังไฟล์ด้วย
เป็นไปได้หรือไม่
คำตอบ:
ถ้าเวอร์ชัน <8.4.0
pg_dump -D -t <table> <database>
เพิ่ม-a
ก่อน-t
ถ้าคุณต้องการเฉพาะ INSERTs โดยไม่ต้องสร้างตาราง ฯลฯ เพื่อตั้งค่าตารางตั้งแต่แรก
เวอร์ชัน> = 8.4.0
pg_dump --column-inserts --data-only --table=<table> <database>
-d
, -a
และ-t
สั้นรุ่นที่ยังคงอยู่แม้ว่า ตรวจสอบด้วย PG11
--inserts
เป็นอีกทางเลือกหนึ่ง มันคืนค่าเร็วขึ้นเล็กน้อย แต่ไม่สามารถทนต่อการเปลี่ยนแปลงลำดับคอลัมน์ได้
หากคุณต้องการ DUMP ส่วนแทรกของคุณลงในไฟล์. sql :
cd
ไปยังตำแหน่งที่คุณต้องการตั้ง.sql
ไฟล์pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql
สังเกต> my_dump.sql
คำสั่ง สิ่งนี้จะใส่ทุกอย่างลงในไฟล์ sql ชื่อmy_dump
ใส่ลงในสคริปต์ฉันชอบอะไรทำนองนั้น:
#!/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
ในกรณีที่คุณใช้การเข้าถึงระยะไกลและต้องการถ่ายโอนข้อมูลฐานข้อมูลทั้งหมดคุณสามารถใช้:
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
เพื่อแทรกข้อมูลเดียวกันในฐานข้อมูลของคุณโดยพิจารณาว่าคุณมีโครงสร้างเดียวกัน