Bảng sao chép Python từ cơ sở dữ liệu này sang cơ sở dữ liệu Postgres khác

Câu hỏi. Tôi có một số bảng trên cơ sở dữ liệu trên phiên bản máy chủ PostgreSQL. Tôi muốn sao chép lược đồ và dữ liệu sang một phiên bản máy chủ PostgreSQL  khác. Có quy trình đơn giản nào sử dụng pgAdmin để hoàn thành tác vụ này không?

Trả lời. Để có nỗ lực di chuyển lớn hơn, tôi đề xuất phương pháp pg_dump\pg_restore nhưng một phương pháp đơn giản là sử dụng chức năng sao lưu trên pgAdmin.  

Bạn cũng có thể sử dụng chức năng sao lưu trong pgAdmin. Đây là các bước

  • Mở pgAdmin, nhấp chuột phải vào bảng cơ sở dữ liệu bạn muốn di chuyển, chọn "Sao lưu"
  • Chọn thư mục cho tệp đầu ra và đề xuất tên tệp
  • Đặt Định dạng thành "Đơn giản"
  • Nhấp vào tab "Dữ liệu/Đối tượng", chọn "Chỉ dữ liệu" hoặc "chỉ Lược đồ". Điều này sẽ tùy thuộc vào mục tiêu của bạn
  • Dưới Tùy chọn. Phần Truy vấn, nhấp vào "Sử dụng Chèn Cột" và "Lệnh Chèn Người dùng". Điều này sẽ tạo ra các câu lệnh INSERT
  • Nhấp vào nút "Sao lưu". Điều này xuất ra một. tập tin sao lưu
  • Mở tệp mới này bằng notepad. Bạn sẽ thấy các tập lệnh chèn cần thiết cho bảng/dữ liệu. Sao chép và dán chúng vào trang sql cơ sở dữ liệu mới trong pgAdmin. Chạy dưới dạng pgScript - Truy vấn-> Thực thi dưới dạng pgScript.      
  • Nếu bạn đã chọn tùy chọn Lược đồ, bạn có thể cần điều chỉnh tên chủ sở hữu nếu tên chủ sở hữu trên cơ sở dữ liệu đích khác - vì bạn có thể gặp lỗi "không tìm thấy vai trò" trong khi áp dụng tập lệnh ở trạng thái đích

Đọc thêm về PostgreSQL & di chuyển

Sự thật về việc di chuyển SQL Server sang PostgreSQL

Tiêu điểm trên Babelfish cho Aurora PostgreSQL

Cách sử dụng PostgreSQL pg_basebackup


Tác giả. lan man (http. //www. dba-ninja. com)
Chia sẻ

Đôi khi bạn có thể cần sao chép hoặc chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong PostgreSQL. Rất dễ thực hiện việc này bằng hàm dblink trong PostgreSQL. Trong bài viết này, chúng ta sẽ tìm hiểu cách sao chép/truyền dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong PostgreSQL


Cách sao chép/chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong PostgreSQL

Dưới đây là các bước để sao chép/chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong PostgreSQL. Chúng ta sẽ xem xét hai cách để thực hiện việc này – sử dụng dblink và sử dụng câu lệnh sao chép bảng


dblink cho phép bạn dễ dàng tìm nạp dữ liệu từ cơ sở dữ liệu khác cục bộ hoặc từ xa. Đây là cú pháp của nó

dblink('connection string', 'your query')

Dưới đây là một ví dụ sử dụng dblink để tìm nạp dữ liệu từ bảng sản phẩm trong bán hàng cơ sở dữ liệu từ xa. Thay thế hdd bằng địa chỉ IP hoặc URL của máy chủ cơ sở dữ liệu, xxx bằng tên người dùng cơ sở dữ liệu, yyy bằng mật khẩu của nó, bán hàng bằng tên cơ sở dữ liệu của bạn và sửa đổi truy vấn đã chọn theo yêu cầu của bạn

dblink('host=hhh user=xxx password=yyy dbname=sales', 'SELECT id, name, price FROM products')

Xin lưu ý, trong trường hợp trên, bạn cần chỉ định các tham số kết nối theo cách được phân tách bằng dấu cách

Kết quả của hàm dblink ở trên sẽ giống như bất kỳ câu lệnh chọn nào. Bạn có thể sử dụng nó trong truy vấn để chèn dữ liệu từ xa đã tìm nạp vào bảng cục bộ của mình, như minh họa bên dưới

INSERT INTO local_products(id, name, price)
SELECT a, b, c FROM dblink('host=hhh user=xxx password=xxx dbname=sales', 'SELECT id, name, price FROM products') AS x(id integer, name varchar(10), price integer)

Nếu bạn cần tìm nạp dữ liệu từ xa một cách thường xuyên, bạn nên lưu trữ chuỗi kết nối, làm biến cho người dùng lại hoặc tạo ánh xạ người dùng máy chủ. Sau đó, bạn có thể dễ dàng sử dụng phím tắt

dblink('yourdbname','query')


2. Sử dụng lệnh sao chép dữ liệu

Đây là cú pháp cơ bản để sao chép dữ liệu từ source_db sang Destination_db bằng cách sử dụng lệnh sao chép dữ liệu. Xin lưu ý lệnh sau sẽ hoạt động cho PostgreSQL 9. 4 hoặc cao hơn

$ psql source_db -c 'COPY data_table TO stdout' | psql destination_db -c 'COPY data_table FROM stdin'

Trong lệnh trên, source_db là cơ sở dữ liệu nguồn từ đó dữ liệu sẽ được sao chép và Destination_db là cơ sở dữ liệu đích mà dữ liệu sẽ được sao chép. Dưới đây là một ví dụ để sao chép bảng sản phẩm từ cơ sở dữ liệu bán hàng sang cơ sở dữ liệu new_sales

$ psql sales -c 'COPY products TO stdout' | psql new_sales -c 'COPY products FROM stdin'


3. Sử dụng Mệnh đề Mẫu

Nếu bạn đang chạy PostgreSQL 9. 0 trở lên, bạn cũng có thể sử dụng từ khóa TEMPLATE để sao chép cơ sở dữ liệu khác. Bạn cần đăng nhập vào phiên PostgreSQL để có thể thực thi lệnh sau

psql> CREATE DATABASE new_database TEMPLATE original_database;

Trong trường hợp này, cơ sở dữ liệu mới sẽ là bản sao của cơ sở dữ liệu gốc. Nó sẽ có cùng một bảng, lược đồ, mã hóa và dữ liệu

Tuy nhiên, điều quan trọng cần nhớ là không phiên nào khác có thể được kết nối với cơ sở dữ liệu ban đầu của bạn khi bạn đang chạy lệnh trên

Trong bài viết này, chúng ta đã học được 3 cách khác nhau để sao chép/truyền dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong PostgreSQL

Làm cách nào để sao chép tất cả các bảng từ lược đồ này sang lược đồ khác trong Postgres?

Sao chép dữ liệu giữa các bảng .
TẠO BẢNG [Bảng để sao chép sang] AS [Bảng để sao chép từ] KHÔNG CÓ DỮ LIỆU;
CHÈN VÀO [Bảng cần sao chép] CHỌN [Cột cần sao chép] TỪ [Bảng cần sao chép] WHERE [Điều kiện tùy chọn];
TẠO BẢNG [Bảng mới] NHƯ BẢNG [Bảng cũ] KHÔNG CÓ DỮ LIỆU;

Làm cách nào để sao chép cơ sở dữ liệu trong PostgreSQL?

Để tạo một bản sao của cơ sở dữ liệu, hãy chạy lệnh sau trong psql. .
CREATE DATABASE [Cơ sở dữ liệu cần tạo] VỚI TEMPLATE [Cơ sở dữ liệu cần sao chép] OWNER [Tên người dùng của bạn];
CREATE DATABASE [Cơ sở dữ liệu cần tạo] VỚI TEMPLATE [Cơ sở dữ liệu cần sao chép] OWNER [Tên người dùng của bạn];
CHỌN pg_terminate_backend(pg_stat_activity

Bạn có thể tham gia các bảng từ các cơ sở dữ liệu Postgres khác nhau không?

Ngay cả khi hai cơ sở dữ liệu đều là cơ sở dữ liệu Postgresql, bạn sẽ không thể tham gia . Các bảng phải bắt nguồn từ cùng một cơ sở dữ liệu.
dblink là mô-đun hỗ trợ kết nối với các cơ sở dữ liệu PostgreSQL khác từ bên trong phiên cơ sở dữ liệu . Xem thêm postgres_fdw, cung cấp chức năng tương tự bằng cách sử dụng cơ sở hạ tầng hiện đại và tuân thủ tiêu chuẩn hơn. Trước đó.