powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите спланировать процесс загрузки xml файлов в базу.
7 сообщений из 7, страница 1 из 1
помогите спланировать процесс загрузки xml файлов в базу.
    #39336300
blackmac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день!

Есть задача ежемесячно загружать обновление ЕГРЮЛ в базу данных.
Обновления присылают в виде однотипных XML файлов.
Каждый файл раскладывается на 16 таблиц.

Изначально была мысль описать EXTERNAL TABLE TYPE ORACLE_LOADER, и загрузку INSERT ALL в 16 целевых таблиц.
Но структура XML не совсем табличная, и пришлось отказать.

Сейчас пробую вариант
16 view с запросами вида XMLTable
SELECT ..
FROM (
'/EGRUL_UL_DATA/UL'
PASSING XMLTYPE(BFILENAME('EGRUL_DIR', 'egrul.xml'), NLS_CHARSET_ID('CL8MSWIN1251'))
COLUMNS
А после этого выгружать данные в целевые таблицы используя INSERT /*+ APPEND */
Хотелось бы вести обработку каждого файла в одной транзакции, т.e commit после загрузки 16-й таблицы.
На момент загрузки отключаю ref constraint, триггеров на таблицах нет.

Первый insert проходит нормально, на второй пишет
SQL Error: ORA-12840: невозможен доступ к удаленной таблице после транзакции параллельной/вставляемой прямой загрузки
12840. 00000 - "cannot access a remote table after parallel/insert direct load txn"
*Cause: Within a transaction, an attempt was made to perform distributed
access after a PDML or insert direct statement had been issued.

Т е доступ XMLTABLE - remote table?
Есть воркараунд для этого ?
...
Рейтинг: 0 / 0
помогите спланировать процесс загрузки xml файлов в базу.
    #39336949
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть возможность представить содержимое файла в виде xmltype
то можно все представить в виде pl/sql блока примерно так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare
	T_XML xmltype:=...;
begin

	insert 
		into t1(f1,f2,f3...)
		select  f1,f2,f3...
		FROM XMLTABLE('/xpath'
				PASSING ( T_XML )
				COLUMNS
					f1             varchar2(100)   PATH 'f1path',
					f2             timestamp       PATH 'f2path',
					f3             number          PATH 'f3path',
					...
			) xmlt
	;
	...
	insert into t16
	...
	commit;
end;
...
Рейтинг: 0 / 0
помогите спланировать процесс загрузки xml файлов в базу.
    #39336967
no_append
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blackmaccommit после загрузки 16-й таблицы.либо коммит, либо директ пафос.
...
Рейтинг: 0 / 0
помогите спланировать процесс загрузки xml файлов в базу.
    #39337492
kaldorey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blackmac,

Планируется ли у вас историю сохранять? Проверку качества данных в файле проверяете?
...
Рейтинг: 0 / 0
помогите спланировать процесс загрузки xml файлов в базу.
    #39337493
kaldorey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blackmac,

И сразу интересно, данные получаете напрямую от ФНС или из другого источника? От ФНС по многим недавно зарегистрированным просто не приходит
...
Рейтинг: 0 / 0
помогите спланировать процесс загрузки xml файлов в базу.
    #39340704
blackmac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaldoreyblackmac,

Планируется ли у вас историю сохранять? Проверку качества данных в файле проверяете?

История - накапливается.

kaldoreyblackmac,

И сразу интересно, данные получаете напрямую от ФНС или из другого источника? От ФНС по многим недавно зарегистрированным просто не приходит

Вот источник этих xml файлов мне не известен к сожалению.
...
Рейтинг: 0 / 0
помогите спланировать процесс загрузки xml файлов в базу.
    #39340708
blackmac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.если есть возможность представить содержимое файла в виде xmltype
то можно все представить в виде pl/sql блока примерно так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare
	T_XML xmltype:=...;
begin

	insert 
		into t1(f1,f2,f3...)
		select  f1,f2,f3...
		FROM XMLTABLE('/xpath'
				PASSING ( T_XML )
				COLUMNS
					f1             varchar2(100)   PATH 'f1path',
					f2             timestamp       PATH 'f2path',
					f3             number          PATH 'f3path',
					...
			) xmlt
	;
	...
	insert into t16
	...
	commit;
end;



А можно поподробней, не сталкивался с этим.

На каком этапе производится запрос из файла ?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите спланировать процесс загрузки xml файлов в базу.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]