gpt4 book ai didi

sql - Oracle:加载一个大的 xml 文件?

转载 作者:数据小太阳 更新时间:2023-10-29 01:53:04 25 4
gpt4 key购买 nike

现在我有大量我感兴趣的 XML 数据:

https://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump

我想把它加载到 Oracle 中来玩。

如何直接将大型 XML 文件直接加载到 Oracle 中?服务器端解决方案(数据文件可以在服务器上打开)和客户端解决方案受到欢迎。

这里有一些 badges.xml 的具体示例。

<?xml version="1.0" encoding="UTF-8" ?>
<badges>
<row UserId="3718" Name="Teacher" Date="2008-09-15T08:55:03.923"/>
<row UserId="994" Name="Teacher" Date="2008-09-15T08:55:03.957"/>
...

最佳答案

您可以通过 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>
[...]

要访问文件中的字段,您可以使用 another 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

关于sql - Oracle:加载一个大的 xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/998055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com