に遭遇。ここのxml:私はサンプルXMLファイルは、(Windowsの場合)Editplusを使用して作成した問題
< ?xml version="1.0" encoding="UTF-8" ?> < badges > < row UserId="3714" Name="Teacher" Date="2008-09-15T08:55:03.923"/> < row UserId="994" Name="Teacher" Date="2008-09-15T08:55:03.957"/> </badges>
私の目標は、Oracle DBのテーブルに、この情報を取得することです。ここで提案したようにhttps://stackoverflow.com/questions/998055?sort=newest#sort-top、SQLコマンドを実行しようとしました。しかし、
========================= SQLクエリ1 ============を成功することができませんでした================
SQL> SELECT XMLTYPE(bfilename('D', 'tmp.xml'), nls_charset_id('UTF8')) xml_data FROM dual;
XML_DATA
------------------------------------------------------------
<?xml version="1.0" encoding="WINDOWS-1252"?>
<badges>
<row UserId="3714" Name
出力では、xmlファイルの半分が切り捨てられています。出力のエンコーディングタイプはWINDOWS-1252と見なされます。誰かがなぜそんなことが起こっているのか説明できますか?
============================================== ============================
================== ============= SQLクエリ2 =======================
SQL> SELECT UserId, Name, to_timestamp(dt, 'YYYY-MM-DD"T"HH24:MI:SS.FF3') dt
2 FROM (SELECT XMLTYPE(bfilename('D', 'tmp.xml'), 3 nls_charset_id('WINDOWS-1252')) xml_data 4 FROM dual), 5 XMLTable('for $i in /badges/row 6 return $i' 7 passing xml_data 8 columns UserId NUMBER path '@UserId', 9 Name VARCHAR2(50) path '@Name', 10 dt VARCHAR2(25) path '@Date');XMLTable('for $i in /badges/row * ERROR at line 5: ORA-00933: SQL command not properly ended
============================================= ======================== 同じクエリがここにhttps://stackoverflow.com/questions/998055?sort=newest#sort-top働いていました。しかし、私にとってはそうではありません。 マシンにOracle 10gがインストールされています。 誰かがクエリを動作させるための修正を提案できますか?
ありがとうございました。
@Shafi:私の答えでXMLデータにアクセスする別の方法を追加しました。このメソッドはOracle 10gR1で動作するはずです –