PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để kết xuất dữ liệu đối tượng lớn từ Postgres 9.4, và sau đó nhập nó vào Postgres8.x?

Vấn đề là kết xuất sử dụng hàm pg_catalog.lowrite(integer, bytea) để tạo đối tượng lớn và cú pháp mặc định như thế nào bytea các chữ được đại diện trong PostgreSQL đã thay đổi với phiên bản 9.0.

Có tham số bytea_output có thể được đặt thành escape để xuất ra bytea ở định dạng cũ với các phiên bản PostgreSQL sau này. Than ôi, pg_dump không tôn trọng thông số đó khi tạo kết xuất, nó luôn sử dụng "new" hex định dạng.

Kết quả là không thể khôi phục kết xuất chứa các đối tượng lớn từ phiên bản PostgreSQL 9.0 trở lên vào cơ sở dữ liệu trước 9.0.

Bạn sẽ phải chuyển các đối tượng lớn này theo một số cách khác, có thể bằng cách viết một chương trình di chuyển.

Bạn có thể đề xuất (trên danh sách gửi thư pgsql-hacker) một tùy chọn cho pg_dump cho phép đặt bytea_escape đối với kết xuất, nhưng bạn có thể gặp phải sự phản kháng, vì việc khôi phục kết xuất từ ​​phiên bản PostgreSQL mới hơn sang phiên bản cũ hơn không được hỗ trợ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Node PostgreSQL hết thời gian chờ một truy vấn của máy khách

  2. Sự khác biệt giữa dấu nháy đơn và dấu nháy kép trong PostgreSQL là gì?

  3. Có thể tự động lặp qua các cột của bảng không?

  4. Quy trình gọi JPA Hibernate được lưu trữ

  5. Chỉ định lược đồ PostgreSQL trong Django