Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Speichern Sie große JSON-Dateien in Oracle DB

CLOB haben eine Größenbeschränkung von 4G

Aber die Einschränkung hier ist mit UTL_HTTP.read_text die das Ergebnis als VARCHAR2 zurückgibt (Sie haben eine implizite Umwandlung hier).

Um große Textobjekte einfach aus dem Internet abzurufen, benötigen Sie wahrscheinlich HttpUriType.getClob

Falls Sie aus irgendeinem Grund bei UTL_HTTP bleiben möchten , müssen Sie eine Schleife ausführen, um Ihre Daten Chunk für Chunk zu lesen. Etwas in der Art:

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;

Siehe http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php für verschiedene Beispiele