Oracle
 sql >> Base de données >  >> RDS >> Oracle

Stockez de gros fichiers JSON dans Oracle DB

CLOB avoir une limite de taille de 4G

Mais la limitation ici est avec UTL_HTTP.read_text qui renvoie le résultat sous la forme d'un VARCHAR2 (vous avez un implicite conversion ici).

Pour récupérer facilement des objets texte volumineux sur le Web, vous avez probablement besoin de HttpUriType.getClob

Si pour une raison quelconque vous souhaitez vous en tenir à UTL_HTTP , vous devrez boucler pour lire vos données morceau par morceau. Quelque chose comme ça :

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;

Voir http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vor divers exemples