- คุณสามารถใช้เครื่องมือ pg_dump (ดูpg_dump doc ) และ pg_restore ( pg_restore doc )
- คุณไม่จำเป็นต้องสร้างชื่อฐานข้อมูลใหม่ "A" บนเซิร์ฟเวอร์ใหม่
* ตัวอย่างพื้นฐาน:
ฉันสร้างไฟล์ "dump.bat" & "restore.bat" ในหน้าต่างเพื่อถ่ายโอน / กู้คืน
1 / สำรอง:
"C:\Program Files\PostgreSQL\9.1\bin\pg_dump.exe" --host localhost --port 5432 --username "postgres" --role "postgres" --format plain --encoding UTF8 --schema-only --file "dump_resul.sql" --schema "name_schema_B" "name_database_A"
ผล:
-- PostgreSQL database dump
-- Dumped from database version 9.1.4
-- Dumped by pg_dump version 9.1.4
SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public, pg_catalog;
CREATE TABLE abtb_temp (
id bigint NOT NULL,
app_code character varying(100)
); ....
* หมายเหตุ: ตัวเลือกที่สำคัญบางอย่าง:
--data-only, --format=format (ex: format=tar -> if you have a big database), --schema-only, --table=table (ex: --table=schema_name.table_name) ...
2 / กู้คืน:
"C:\Program Files\PostgreSQL\9.1\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "any_database" --no-password --no-owner --no-privileges --schema name_schema_B --verbose "C:\dump_resul.sql"
(**)
(**) ในความเป็นจริงหากไฟล์รูปแบบของคุณคือ * .sql คุณสามารถใช้ pgAdmin (หรือ psql) เพื่อกู้คืน คุณควรใช้ pg_restore เพื่อกู้คืนไฟล์. tar ( .bakup ... )
-b
ตัวเลือกเพื่อถ่ายโอนข้อมูลด้วย blobs โปรดทราบว่า-b
มีการเพิ่ม blobs ทั้งหมดไม่เพียง แต่สำหรับสคีมาเดียว