Oracle是否提供XML格式文件的標準上傳? 我認爲用於XML輸出的規範格式structure = ROWSET/ROW/columname
可以通過使用適當的控制文件內容運行sqlldr而再次上載回表中。
但我在網上任何地方都找不到任何東西,試驗後的錯誤消息似乎表明只能將XML上載到XML格式的表格中,我只想在普通表格中上傳數據,但要提供XML格式的數據。Oracle SQL * Loader可以處理XML嗎?
0
A
回答
1
不,SQL * Loader只能處理「平面」文件。
一種方法是編寫一個XSLT轉換,將ROWSET/ROW/column
格式轉換爲文本文件,然後將其導入到目標表中。
另一種選擇是將XML導入到單個行中,然後使用Oracle的XML函數從該臨時表中選擇關係結果並將其插入到真實表中。
1
沒有一個標準化的選項,但有了這種特定的格式,你可以做到這一點。如果你有一個表:
CREATE TABLE test_tab (
id NUMBER,
text VARCHAR2(50)
);
而且在test_tab.xml
文件的記錄:
<ROWSET>
<ROW>
<ID>1</ID>
<TEXT>This is some text</TEXT>
</ROW>
<ROW>
<ID>2</ID>
<TEXT>This is some more text</TEXT>
</ROW>
<ROW>
<ID>3</ID>
<TEXT>This is some other text</TEXT>
</ROW>
<ROW>
<ID>4</ID>
<TEXT>This is also some text</TEXT>
</ROW>
</ROWSET>
和控制文件test_tab.ctl
:
LOAD DATA
INFILE 'test_tab.xml'
CONCATENATE 4
INTO TABLE test_tab
(
dummy FILLER CHAR(15) TERMINATED BY "<ROW>",
id CHAR(10) ENCLOSED BY "<ID>" AND "</ID>",
text CHAR(40) ENCLOSED BY "<TEXT>" AND "</TEXT>"
)
你可以這樣做:
sqlldr usr/pwd control=test_tab.ctl
Commit point reached - logical record count 4
SELECT * FROM test_tab;
ID TEXT
---------- --------------------------------------------------
1 This is some text
2 This is some more text
3 This is some other text
4 This is also some text
您也可以從同一個文件中創建一個外部表,如果你把一個目錄Oracle可以看到:
CREATE TABLE test_tab (
id NUMBER,
text VARCHAR2(50)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY some_dir
ACCESS PARAMETERS
(
RECORDS DELIMITED BY "</ROW>"
FIELDS
(
dummy CHAR(15) TERMINATED BY "<ROW>",
id CHAR(10) ENCLOSED BY "<ID>" AND "</ID>",
text CHAR(40) ENCLOSED BY "<TEXT>" AND "</TEXT>"
)
)
LOCATION ('test_tab.xml')
)
PARALLEL
REJECT LIMIT UNLIMITED;
Table created.
SELECT * FROM test_tab;
ID TEXT
---------- --------------------------------------------------
1 This is some text
2 This is some more text
3 This is some other text
4 This is also some text
相關問題
- 1. 可以在chakracore下處理xml嗎?
- 2. Oracle sql loader驗證
- 3. Oracle SQL-Loader有效處理值中的內部雙引號
- 4. 如何使用Oracle Sql Loader
- 5. 什麼是Oracle SQL Loader?
- 6. 我可以在Oracle Loader文件中添加SQL Stages
- 7. oracle sql批處理
- 8. 在SQL Server中可以創建一個可以處理序列的函數嗎?
- 9. NSJSONSerialization可以處理null嗎?
- 10. Java可以處理Expando嗎?
- 11. WCF可以處理GUID嗎?
- 12. 可以將變量傳遞給SQL * Loader控制文件嗎?
- 13. 可以通過ssis處理宏(Excel)嗎?
- 14. sys.argv可以處理可選參數嗎?
- 15. PL/SQL Oracle錯誤處理
- 16. Can $ self可以傳遞給XML :: Twig處理程序嗎?
- 17. Oracle SQL Loader控制文件分隔符
- 18. 如何調整Oracle的SQL * Loader追加?
- 19. 使用Oracle sql loader加載時出錯
- 20. Oracle 11g SQL Loader獲取951錯誤
- 21. Oracle sql loader日期格式問題
- 22. Oracle 12c - SQL * Loader條件加載
- 23. 在SQL Loader中使用Oracle序列?
- 24. SQL * Loader:處理數據中的分隔符字符
- 25. WPF可以處理Guid從LINQ到SQL嗎?
- 26. SQL Server 2008可以每秒處理300個事務嗎?
- 27. 經典ASP可以處理SQL Server鏡像故障轉移嗎?
- 28. PHP可以處理所有類型的SQL嗎?
- 29. SQL Try-Catch塊可以處理拋出的CLR錯誤嗎?
- 30. 我可以直接在SQL查詢中處理返回值嗎
OK - 所以它的背部使用的文件有適當的選擇列分隔符即可。可惜並且有點意外 - 並且提示Oracle在11.3中增加這個功能:-)。 – Maestro13
甲骨文有所不同:http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb25loa.htm和http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/ xdb25loa.htm#ADXDB2900 –
@ SeanB.Durkin:這些示例是關於將XML文件(或片段)的內容加載到單個「XMLType」列中的。這不是關於解析XML結構並將單個標籤的內容放入不同的列中。這個XML:' Arthur '不能**被SQLLoader處理成表'person(id,name)' –