PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Oracle DBMS_LOB.WRITEAPPEND do konwersji Postgres

To zależy od wielkości twojego dużego obiektu. Gdy duże obiekty mają mniej niż około 500 MB, nie musisz używać obiektów LOB (PostgreSQL używa terminu LO) i możesz użyć text lub varchar type - praca jest podobna jak z varchar . Po tym rozmiarze powinieneś użyć 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)

Możesz więc użyć LO API, ale podstawowe typy powinny być preferowane. Limity dla tych typów są zwykle wystarczająco dobre - a praca z podstawowymi typami jest znacznie wygodniejsza - z pewnymi możliwościami, takimi jak pełny tekst.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:Wiele do wielu vs. wiele kolumn vs. kolumna tablicy

  2. Jak zainstalować rozszerzenia Postgres podczas tworzenia bazy danych?

  3. Spust Postgres i blokowanie rzędów

  4. Sprawdź, czy typ zdefiniowany przez użytkownika już istnieje w PostgreSQL

  5. Zwróć tablicę UUID PostgreSQL jako listę z psycopg2