PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Oracle DBMS_LOB.WRITEAPPEND ke Konversi Postgres

Itu tergantung pada ukuran objek besar Anda. Ketika objek besar Anda kurang dari 500MB, maka Anda tidak perlu menggunakan LOB (PostgreSQL menggunakan istilah LO), dan Anda dapat menggunakan text atau varchar ketik - pekerjaannya mirip dengan varchar . Setelah ukuran ini, Anda harus menggunakan LO API.

CREATE OR REPLACE FUNCTION writeappend(oid, text)
RETURNS void AS $$
DECLARE
  content bytea;
  fd int;
BEGIN
  content := convert_to($2, getdatabaseencoding());
  fd := lo_open($1, 131072);
  PERFORM lo_lseek(fd, 0, 2);
  IF length(content) <> lowrite(fd, content) THEN
    RAISE EXCEPTION 'not all content was written';
  END IF;
  PERFORM lo_close(fd);
END;
$$ LANGUAGE plpgsql;

postgres=> select lo_creat(-1);
┌──────────┐
│ lo_creat │
╞══════════╡
│    20653 │
└──────────┘
(1 row)

postgres=> select writeappend(20653, e'Hello\r\n');
┌─────────────┐
│ writeappend │
╞═════════════╡
│             │
└─────────────┘
(1 row)

postgres=> select writeappend(20653, e'Hello\r\n');
...

postgres=> select convert_from(lo_get(20653),getdatabaseencoding());
┌──────────────┐
│ convert_from │
╞══════════════╡
│ Hello\r     ↵│
│ Hello\r     ↵│
│              │
└──────────────┘
(1 row)

Jadi Anda dapat menggunakan LO API, tetapi tipe dasar harus lebih disukai. Batasan untuk tipe ini biasanya cukup baik - dan bekerja dengan tipe dasar jauh lebih nyaman - dengan beberapa kemungkinan seperti fulltext.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jooq - masalah mengenali kendala UNIK postgres

  2. Pgadmin tidak memuat

  3. PostgreSQL:mengonversi string hex dari angka yang sangat besar menjadi NUMERIK

  4. Mengatur work_mem di Postgres untuk kueri tertentu

  5. Permintaan squeel dan Heroku, Postgres:Kesalahan menggunakan GROUP BY dan ORDER