【问题标题】:How to import xml file from Internet directly to Oracle table如何将 xml 文件从 Internet 直接导入 Oracle 表
【发布时间】: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

问题是存储它。

【问题讨论】:

    标签: xml curl plsql


    【解决方案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所述
    猜你喜欢
    • 2014-05-13
    • 2016-06-15
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多