Загрузить XML-файл в Oracle с помощью SQL * Loader - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь загрузить большие XML-файлы в Oracle 11g и разобрать их в новую таблицу (у меня есть SQL-запросы для этой части), но я не могу установить правильные настройки в управляющем файле SQL * Loader , Я в некотором роде новичок в Oracle, и после поиска решений в Интернете и инструкций Oracle, но не смог решить мою проблему, я прошу вашей помощи. Я использую Windows 10 и SQL Developer 4.0.3.16 для запуска запросов на создание таблиц в Oracle.

На этот вопрос был дан ответ в предыдущем посте, но предлагаемое решение не работает для меня ( При попытке загрузить сгусток в таблицу Oracle, загружая слишком много записей ), однако я не могу заставить их работать.

Я использовал оба контрольных файла с предыдущей веб-страницы, и только первая из них работает для меня с той же проблемой (один и тот же XML-код вставлен в несколько строк) Я запускаю этот код в командной строке:

sqlldr rc_tables/xxuser@xx.xxx.xx.xx/euxxxx control='control_file.ctl' log = 'data_log.log' 

Контрольный файл:

LOAD DATA
CHARACTERSET UTF8
INFILE 'C:\Users\...\NVTPOI_03_MEX_9701_001.xml'
REPLACE
INTO TABLE LEAD_REPORTING_CLOB
TRAILING NULLCOLS
(
XML  LOBFILE(CONSTANT 'C:\...\NVTPOI_03_MEX_9701_001.xml') TERMINATED BY    EOF
)

Моя созданная таблица:

CREATE TABLE "LEAD_REPORTING_CLOB" 
(SHARED_XML CLOB);

Если я использую второй подход (Решение в предыдущем посте), я получаю сообщение об ошибке, если решаю запустить его без добавления поля FILENAME в таблицу:

SQL * Loader-416: предложение SDF для поля SHARED_XML в таблице LEAD_REPORTING_CLOB ссылается на несуществующее поле.

Контрольный файл:

LOAD DATA
INFILE * 
REPLACE
INTO TABLE LEAD_REPORTING_CLOB
FIELDS TERMINATED BY ',' TRAILING NULLCOLS
(
SHARED_XML  LOBFILE(FILENAME) TERMINATED BY EOF
)
BEGINDATA
'C:\Users\ivcrespo\Documents\projects\2018\oracle\NVTPOI_CHL_9500_001.xml'

Я также пробовал предыдущий контрольный файл с таблицей, в которой есть поле FILENAME char (100), но id ничего не загружал.

контрольный файл:

LOAD DATA
INFILE * 
REPLACE

INTO TABLE LEAD_REPORTING_CLOB
FIELDS TERMINATED BY ',' TRAILING NULLCOLS
(
FILENAME,
SHARED_XML  LOBFILE(FILENAME) TERMINATED BY EOF
)
BEGINDATA
'C:\Users\ivcrespo\Documents\projects\2018\oracle\NVTPOI_CHL_9500_001.xml'


SQL*Loader: Release 11.2.0.1.0 - Production on Wed Jul 4 08:39:35 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Control File:   control_file_xml_test2.ctl
Data File:      control_file_xml_test2.ctl
Bad File:       control_file_xml_test2.bad
Discard File:   none specified
(Allow all discards)

Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array:     64 rows, maximum of 256000 bytes
Continuation:   none specified
Path used:      Conventional

Table LEAD_REPORTING_CLOB, loaded from every logical record.
Insert option in effect for this table: REPLACE
TRAILING NULLCOLS option in effect

Column Name                    Position   Len   Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILENAME                            FIRST     *   ,       CHARACTER            
SHARED_XML                        DERIVED     *  EOF      CHARACTER            
Dynamic LOBFILE.  Filename in field FILENAME


Table LEAD_REPORTING_CLOB:
  0 Rows successfully loaded.
  0 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Space allocated for bind array:                  16512 bytes(64 rows)
Read   buffer bytes: 1048576

Total logical records skipped:          0
Total logical records read:             0
Total logical records rejected:         0
Total logical records discarded:        0

Run began on Wed Jul 04 08:39:35 2018
Run ended on Wed Jul 04 08:39:37 2018

Elapsed time was:     00:00:02.16
CPU time was:         00:00:00.03

Может кто-нибудь помочь мне исправить это? Примеры, которые я нашел в Интернете, обычно показывают контрольный файл, но не созданную таблицу. Есть ли ошибка в моей созданной таблице. Это будет пример первого узла XML-файла (их может быть сотни в каждом файле):

<?xml version="1.0" encoding="UTF-8"?>
<DeliveryPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:saxon="http://saxon.sf.net/"
             CreationTime="2018-06-18T13:07:40.196Z"
             VersionNo="Q318">
<POI>
    <Action>Add</Action>
    <SupplierID>3</SupplierID>
    <Identity>
        <POI_Entity_ID>109034</POI_Entity_ID>
        <Names>
            <POI_Name Type="Official" Language_Code="SPA">
                <Text>RAFAEL MURILLO VIDAL</Text>
            </POI_Name>
        </Names>
        <Category_ID Type="NT">9701</Category_ID>
        <Product_Type>7</Product_Type>
    </Identity>
    <Locations>
        <Location>
            <Address>
                <ParsedAddress>
                    <ParsedStreetAddress>
                        <ParsedStreetName>
                    <StreetName Language_Code="SPA">RAFAEL MURILLO VIDAL</StreetName>
                    <StreetType Language_Code="SPA" Before="true" Attached="false">AVENIDA</StreetType>
                        </ParsedStreetName>
                    </ParsedStreetAddress>
                    <ParsedPlace>
                        <PlaceLevel2 Language_Code="SPA">VERACRUZ DE IGNACIO DE LA LLAVE</PlaceLevel2>
                        <PlaceLevel3 Language_Code="SPA">XALAPA</PlaceLevel3>
                        <PlaceLevel4 Language_Code="SPA">CUAUHTÉMOC</PlaceLevel4>
                    </ParsedPlace>
                    <Zone Language_Code="SPA" Type="KD">XALAPA DE ENRÍQUEZ</Zone>
                    <PostalCode>
                        <NT_Postal>91069</NT_Postal>
                    </PostalCode>
                    <CountryCode>MEX</CountryCode>
                </ParsedAddress>
            </Address>
            <GeoPosition>
                <Latitude>19.51919</Latitude>
                <Longitude>-96.90392</Longitude>
            </GeoPosition>
            <MapLinkID>
                <LinkID>919722915</LinkID>
                <Side_of_Street>R</Side_of_Street>
                <Percent_from_RefNode>30</Percent_from_RefNode>
            </MapLinkID>
            <Confidence>
                <Match_Level>GeoPoint</Match_Level>
            </Confidence>
        </Location>
    </Locations>
    <Details>
        <Camera>
            <CameraType>Speed</CameraType>
            <SpeedLimit Unit="KPH">60</SpeedLimit>
            <DrivingDirection LinkHeading="T">110</DrivingDirection>
        </Camera>
    </Details>
</POI>
.
. 

</DeliveryPackage>
...