sql >> Database >  >> RDS >> Oracle

Sla grote JSON-bestanden op in Oracle DB

CLOB hebben een maximale grootte van 4G

Maar de beperking hier is met UTL_HTTP.read_text die het resultaat retourneert als een VARCHAR2 (je hebt een impliciete conversie hier).

Om gemakkelijk grote tekstobjecten van internet te halen, hebt u waarschijnlijk HttpUriType.getClob

Als je om wat voor reden dan ook wilt vasthouden aan UTL_HTTP , moet u een lus maken om uw gegevens stuk voor stuk te lezen. Zoiets:

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;

Zie http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php voor verschillende voorbeelden



  1. SQL Server-fout - HRESULT E_FAIL is geretourneerd door een aanroep naar een COM-onderdeel

  2. Postgres JSONb naar XML met tag_name en tag_value

  3. Ik wil de CASE-instructie gebruiken om enkele records in SQL Server 2005 bij te werken

  4. Een Apex-formulier maken met meerdere pagina's