sql >> データベース >  >> RDS >> Oracle

Oracle:大きなxmlファイルをロードしますか?

    SQLを介してサーバー上のXMLファイルにアクセスできます。 /tmp/tmp.xmlにデータを入れて、最初にディレクトリを宣言します:

    SQL> create directory d as '/tmp';
    
    Directory created
    

    次に、XMLファイルを直接クエリできます:

    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>
      [...]
    

    ファイル内のフィールドにアクセスするには、別のSOで説明されている方法を使用できます。例:

    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. OracleでサポートされているROUND()およびTRUNC()日付関数のフォーマットモデル

    2. CSVインポート操作の一部として、単一のステップでテーブルを作成してデータを設定するにはどうすればよいですか?

    3. SQL Serverでセミコロンを使用する必要があるのはいつですか?

    4. OracleのSYSDATE関数