如何将 xml 文件从 Internet 直接导入 Oracle 表
Posted
技术标签:
【中文标题】如何将 xml 文件从 Internet 直接导入 Oracle 表【英文标题】:How to import xml file from Internet directly to Oracle table 【发布时间】:2019-09-14 12:08:29 【问题描述】:我希望我的 Oracle 直接从 Internet 获取一个 xml 文件并将其插入到表中(在此线程中可以省略解析)。
示例:https://cve.mitre.org/data/downloads/allitems-cvrf-year-1999.xml
<Vulnerability
xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1" Ordinal="1">
<Title>CVE-1999-0001</Title>
<Notes>
<Note Type="Description" Ordinal="1">ip_input.c in BSD-derived TCP/IP implementations allows remote attackers to cause a denial of service (crash or hang) via crafted packets.</Note>
<Note Type="Other" Title="Published" Ordinal="2">2000-02-04</Note>
<Note Type="Other" Title="Modified" Ordinal="3">2005-12-16</Note>
</Notes>
<CVE>CVE-1999-0001</CVE>
<References>
<Reference>
<URL/>
<Description>BUGTRAQ:19981223 Re: CERT Advisory CA-98.13 - TCP/IP Denial of Service</Description>
</Reference>
<Reference>
<URL/>
<Description>CERT:CA-98-13-tcp-denial-of-service</Description>
</Reference>
<Reference>
<URL>http://www.openbsd.org/errata23.html#tcpfix</URL>
<Description>CONFIRM:http://www.openbsd.org/errata23.html#tcpfix</Description>
</Reference>
<Reference>
<URL>http://www.osvdb.org/5707</URL>
<Description>OSVDB:5707</Description>
</Reference>
</References>
</Vulnerability> *REPEAT*
首先我创建一个表:
CREATE TABLE XML_TABLE
( ID NUMBER,
XML_DATA XMLTYPE
);
然后我想(如果可能)在表中为每个新漏洞(xml 中漏洞标记之间的所有内容)插入一个新行。
要获取数据,我可以使用以下命令(不确定它是否最适合此目的):
host curl https://cve.mitre.org/data/downloads/allitems-cvrf-year-1999.xml
问题是存储它。
【问题讨论】:
【参考方案1】:您可以使用 UTL_HTTP 包从 Internet 和您的数据库中获取数据。
这里是文档Database PL/SQL Packages and Types Reference UTL_HTTP
这里有一个例子Oracle base UTL_HTTP的解释
如果您在 DB 版本 >=11 上运行,请按照说明了解 ACL。
您可以选择编写您的 java 过程和 PL/SQL 包装器(正如我所做的那样)以与 Web 服务交互并返回一个 Clob。
Take a look here
【讨论】:
感谢您的评论。我已经挣扎了一天没有让 HTTPS 工作。我经常收到 ORA-28759:无法打开文件。有很多线程...只需要耐心找到正确的线程:-) 在您的最后一个链接中,我在尝试编译函数帖子时遇到错误。是不是因为有一些我不知道的先决条件? 我基本上按照您发布的Link 的示例提供的说明进行操作。我已经将 ACL 配置为 these instrcutions 在 sqlnet.ora 文件中我添加了这个: ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE) (METHOD_DATA= (DIRECTORY=C:\Users[USERNAME]\AppData\Local\Temp ))) 这也是我的钱包所在的地方。我已授予对钱包文件的权限并添加了用户 ORA_DBA。 尝试将钱包移动到文件系统上的另一个位置(例如 c:\wallet),如here所述以上是关于如何将 xml 文件从 Internet 直接导入 Oracle 表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Delphi 将数据从 XML 导入 PDF 表单?