2016-05-12 7 views
0

У меня есть файл формата XML для таблицы учетных записей, созданный с использованием запроса как: SELECT table_to_xml ('account', true, FALSE, '');Как импортировать данные XML в таблицу базы данных postgres?

----- Структура таблицы как: CREATE TABLE public.account ( account_id INTEGER NOT NULL, имя УАКСНАК (1) NOT NULL, тип VARCHAR (20), имя_группы УАКСНАК (50) , CONSTRAINT account_pkey ПЕРВИЧНЫЙ КЛЮЧ (account_id));


Вопрос: Как я могу напрямую загружать данные в таблицу счетов, используя XML-файл в PostgreSQL?

ответ

0

Мне пришлось использовать varchar (2) из-за преобразования из xml.

Я использовал избранная в (создает public.account)

select account_id::text::int, account_name::varchar(2), 
account_type::varchar(20) , account_group::varchar(50) INTO 
public.account from(
WITH x AS (SELECT 
'<accounts> 
<account> 
<account_id>1</account_id> 
<account_name> A </account_name> 
<account_type> off shore</account_type> 
<account_group> slush fund </account_group> 
</account> 
<account> 
<account_id>3</account_id> 
<account_name> C </account_name> 
<account_type> off shore</account_type> 
<account_group> slush fund </account_group> 
</account> 
</accounts> '::xml AS t) 

SELECT unnest(xpath('/accounts/account/account_id/text()', t)) 
AS account_id, 
    unnest(xpath('/accounts/account/account_name/text()', t)) 
AS account_name, 
    unnest(xpath('/accounts/account/account_type/text()', t)) 
AS account_type, 
    unnest(xpath('/accounts/account/account_group/text()', t)) 
AS account_group 

FROM x) as accounts 

Если вы заинтересованы в чтении файла XML в то это может быть полезно.

Ref stackexchange sql to read xml from file into postgresql

Я надеюсь, что это помогает

+0

Да ... Я попробую ... Спасибо за ответ. –