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

PostgreSQL:từ OID sang Bytea

Một cách khác không yêu cầu hàm tùy chỉnh là sử dụng loread(lo_open(...)) kết hợp, như:

UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL

Có sự cố với mã này, loread hàm yêu cầu là tham số thứ hai số byte tối đa để đọc (1000000 tham số tôi đã sử dụng ở trên), vì vậy bạn nên sử dụng một số thực sự lớn ở đây nếu dữ liệu của bạn lớn. Nếu không, nội dung sẽ bị cắt bớt sau nhiều byte này và bạn sẽ không lấy lại được tất cả dữ liệu vào bytea trường.

Nếu bạn muốn chuyển đổi từ OID sang trường văn bản, bạn cũng nên sử dụng hàm chuyển đổi, như trong:

UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')

(262144 là một lá cờ cho chế độ mở, 40000 trong hexa, có nghĩa là "chỉ đọc mở")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PgAdmin4 cho phép gỡ lỗi

  2. Cài đặt PHP với Postgresql trên MAC bằng homebrew

  3. 8 tính năng tương thích mới của Oracle trong EnterpriseDB PPAS 9.2 Beta

  4. Hiệu suất chậm quét tuần tự Postgresql trên 500 triệu hàng

  5. Sqlalchemy có thể hoạt động tốt với nhiều tệp cơ sở dữ liệu SQLite đính kèm không?