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
1. Sử dụng dblink
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