Ich habe eine Beispiel-XML-Datei mit Editplus erstellt (in Windows).XML zu Oracle DB-Tabelle: Probleme aufgetreten
< ?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>
Mein Ziel ist es, diese Informationen in Oracle-DB-Tabelle zu erhalten. Wie hier vorgeschlagen https://stackoverflow.com/questions/998055?sort=newest#sort-top, habe ich versucht, die SQL-Befehle auszuführen. Aber konnte nicht gelingen,
========================= SQL-Abfrage 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
In der Ausgabe, ich sehe die Hälfte der xML-Datei abgeschnitten wurde. Und der Codierungstyp in der Ausgabe wird als WINDOWS-1252 angesehen. Könnte jemand erklären, warum es so geschieht?
============================================== ============================
================== ============= SQL-Abfrage 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
============================================= ====================== Die gleiche Abfrage funktionierte hier https://stackoverflow.com/questions/998055?sort=newest#sort-top. Aber für mich ist es nicht so. Ich habe Orakel 10g auf meiner Maschine installiert. Könnte jemand die Korrekturen vorschlagen, damit die Abfragen funktionieren?
Danke.
@Shafi: Ich habe eine andere Methode hinzugefügt, um auf XML-Daten in meiner Antwort zuzugreifen. Diese Methode sollte mit Oracle 10gR1 funktionieren –