Oracle
 sql >> Database >  >> RDS >> Oracle

Archivia file JSON di grandi dimensioni in Oracle DB

CLOB avere un limite di dimensione di 4G

Ma la limitazione qui è con UTL_HTTP.read_text che restituisce il risultato come VARCHAR2 (hai un implicito conversione qui).

Per recuperare facilmente oggetti di testo di grandi dimensioni dal Web, probabilmente hai bisogno di HttpUriType.getClob

Se per qualche motivo vuoi restare con UTL_HTTP , dovrai eseguire un ciclo per leggere i tuoi dati pezzo per pezzo. Qualcosa del genere:

BEGIN
  ...
  l_clob           CLOB;
  l_text           VARCHAR2(32767);
BEGIN
  DBMS_LOB.createtemporary(l_clob, FALSE);

  ...
  l_http_request  := UTL_HTTP.begin_request(your_URI);
  l_http_response := UTL_HTTP.get_response(l_http_request);

  -- Loop to read data chunk by chunk up to the end
  BEGIN
    LOOP
      UTL_HTTP.read_text(l_http_response, l_text, 32766);
      DBMS_LOB.writeappend (l_clob, LENGTH(l_text), l_text);
    END LOOP;
  EXCEPTION
    WHEN UTL_HTTP.end_of_body THEN
      UTL_HTTP.end_response(l_http_response);
  END;

Vedi http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vor vari esempi