我有一个.xml文件,我试图加载到Oracle表中的clob字段。 .xml文件长度为49行。当我运行我的sqlloader cntl时,整个.xml文件作为新行加载到我的表中49次。我正在使用Oracle 11.2.0.3我做错了什么?
CREATE TABLE "LEAD_REPORTING_CLOB"
("SHARED_XML" CLOB);
我的cntl:
LOAD DATA
INFILE *
REPLACE
INTO TABLE LEAD_REPORTING_CLOB
TRAILING NULLCOLS
(
SHARED_XML LOBFILE(CONSTANT '/export/RFD/Lead_Reports/LEADRPT.xml') TERMINATED BY EOF
)
xml file:
<?xml version="1.0" encoding="utf-8"?>
<LeadReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.xxx.yyy/efile">
<Lead>
<SubmissionId>530153999999zdhxxx</SubmissionId>
<PatternDescription>OLF</PatternDescription>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>999.99.99.999</IPv4AddressTxt>
</IPAddress>
<TCPPortNumber>443</TCPPortNumber>
<IPTs>2016-02-05T13:16:55-05:00</IPTs>
</SourceIPAddress>
<SourceDeviceId>
<DeviceId>74B3A80AE5C99X9X99999C17XX59E5XX3779999A</DeviceId>
<DeviceIdTs>2016-02-05T13:16:55-05:00</DeviceIdTs>
</SourceDeviceId>
<AdditionalInformation>
<ReturnSubmStatus>A</ReturnSubmStatus>
<EFIN>555555</EFIN>
<EmailAddressDomain>GMAIL.COM</EmailAddressDomain>
<PhoneNumberLastFour>1899</PhoneNumberLastFour>
</AdditionalInformation>
</Lead>
<Lead>
<SubmissionId>9999992016108floxxx2</SubmissionId>
<AssociatedState>
<StateSubmissionId>9999992016108xhaxxx2</StateSubmissionId>
<StateOrCityCode>GAST</StateOrCityCode>
</AssociatedState>
<PatternDescription>OLF</PatternDescription>
<SourceIPAddress>
<IPAddress>
<IPv4AddressTxt>188.88.8.188</IPv4AddressTxt>
</IPAddress>
<TCPPortNumber>443</TCPPortNumber>
<IPTs>2016-04-17T08:07:54-04:00</IPTs>
</SourceIPAddress>
<SourceDeviceId>
<DeviceId>6B9D4C4B0159XXX8FA30391BC8A099999009B366</DeviceId>
<DeviceIdTs>2016-04-17T08:07:54-04:00</DeviceIdTs>
</SourceDeviceId>
<AdditionalInformation>
<ReturnSubmStatus>A</ReturnSubmStatus>
<EFIN>444444</EFIN>
<EmailAddressDomain>YAHOO.COM</EmailAddressDomain>
<PhoneNumberLastFour>3822</PhoneNumberLastFour>
</AdditionalInformation>
</Lead>
</LeadReport>
答案 0 :(得分:0)
带有LOB的Oracle Loader的典型设置是:
在您的情况下,XML文件似乎既用作主数据文件又用作单独的LOB文件(虽然我不完全理解为什么;您是否也在命令行上指定XML?)。
所以你需要正确指定这三件事。为了避免三个文件,您使用BEGINDATA指令将主数据文件放入控制文件中(这是INFILE之后的astrisk):
LOAD DATA
INFILE *
REPLACE
INTO TABLE LEAD_REPORTING_CLOB
FIELDS TERMINATED BY ',' TRAILING NULLCOLS
(
FILENAME,
SHARED_XML LOBFILE(FILENAME) TERMINATED BY EOF
)
BEGINDATA
/export/RFD/Lead_Reports/LEADRPT.xml