Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Armazene grandes arquivos JSON no Oracle DB


CLOB tem um limite de tamanho de 4G

Mas a limitação aqui é com UTL_HTTP.read_text que retorna o resultado como um VARCHAR2 (você tem um implícito conversão aqui).

Para recuperar objetos de texto grandes da Web com facilidade, você provavelmente precisa de HttpUriType.getClob

Se por algum motivo você quiser ficar com UTL_HTTP , você terá que fazer um loop para ler seu pedaço de dados por pedaço. Algo parecido:
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;

Consulte http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vo vários exemplos