У меня есть большой (1 Mb +) XML-файл, который хранится в локальной папке (например: c: \ temp \ data.xml), который должен быть загружен внутри переменной XMLTYPEКак загрузить XMLTYPE из файла?
Как это сделать?
У меня есть большой (1 Mb +) XML-файл, который хранится в локальной папке (например: c: \ temp \ data.xml), который должен быть загружен внутри переменной XMLTYPEКак загрузить XMLTYPE из файла?
Как это сделать?
ограничение размера поля Oracle XMLTYPE должно быть 4 ГБ, поэтому вы не столкнетесь с проблемами при загрузке файлов размером 1 МБ. Вы должны создать на каталог Oracle (на сервере баз данных), поместите в созданную директорию файл XML, а затем выполнить вашу вставку следующим образом:
[email protected]>mkdir yourdirectory
[email protected]>chown youroracleaccount.youroraclegroup yourdirectory
SQL> CREATE OR REPLACE DIRECTORY XMLDIR AS 'YOURDESIREDPATH'
SQL> GRANT read, write ON DIRECTORY XMLDIR TO <DESIREDORACLESCHEMA>
SQL> INSERT INTO YOURTABLE VALUES (...., XMLType(bfilename('XMLDIR', 'yourfilename.xml') , nls_charset_id('YOURCHARSETID')));
SQL> commit;
Если вы хотите разместить XML в переменной, должен создать внешнюю таблицу, например, в последующем (но вы можете изменить этот образец, как вы нужду):
CREATE TABLE YOURXMLTABLE (doc CLOB)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY xmlfile_dir
ACCESS PARAMETERS
(
FIELDS (lobfn CHAR TERMINATED BY ',')
COLUMN TRANSFORMS (doc FROM lobfile (lobfn))
)
LOCATION ('yourfilename.xml')
)
REJECT LIMIT UNLIMITED;
, а затем выполнить
select * into XMLTYPVARIABLE from XMLTABLE
Regard s Giova
Я попытался выполнить код, который вы предоставили с созданием таблицы внутри разработчика pl/sql - он имеет некоторые синтаксические ошибки. – user149691
Каталог должен находиться на сервере БД и читать/записывать с помощью учетной записи операционной системы Oracle. Он не может быть на клиентской машине, если это то, что OP означает «локальная папка». И 'XMLTABLE' - это имя функции, поэтому используйте это, поскольку имя вашей внешней таблицы будет в лучшем случае запутывать, если оно вообще работает. –