sql >> Database >  >> RDS >> Oracle

Oracle:een groot xml-bestand laden?

Via SQL kunt u toegang krijgen tot de XML-bestanden op de server. Met uw gegevens in de /tmp/tmp.xml, zou u eerst de directory declareren:

SQL> create directory d as '/tmp';

Directory created

U kunt uw XML-bestand dan rechtstreeks opvragen:

SQL> SELECT XMLTYPE(bfilename('D', 'tmp.xml'), nls_charset_id('UTF8')) xml_data
  2    FROM dual;

XML_DATA
--------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<badges>
  [...]

Om toegang te krijgen tot de velden in uw bestand, kunt u de methode gebruiken die in een andere SO wordt beschreven, bijvoorbeeld:

SQL> SELECT UserId, Name, to_timestamp(dt, 'YYYY-MM-DD"T"HH24:MI:SS.FF3') dt
  2    FROM (SELECT XMLTYPE(bfilename('D', 'tmp.xml'), 
                            nls_charset_id('UTF8')) xml_data
  3            FROM dual),
  4         XMLTable('for $i in /badges/row
  5                              return $i'
  6                  passing xml_data
  7                  columns UserId NUMBER path '@UserId',
  8                          Name VARCHAR2(50) path '@Name',
  9                          dt VARCHAR2(25) path '@Date');

    USERID NAME       DT                         
---------- ---------- ---------------------------
      3718 Teacher    2008-09-15 08:55:03.923    
       994 Teacher    2008-09-15 08:55:03.957    


  1. Wat zijn de BIN$...-tabellen in de ALL_TAB_COLUMNS-tabel van Oracle?

  2. Hoe records met bepaalde waarden in sql select uit te sluiten

  3. Oracle INSERT in twee tabellen in één query

  4. Wat is er met (nolock) in SQL Server?