EXportar consulta SQL para arquivo

Firebird

21/11/2014

Boa Noite a todos!!

Estou com um projeto de integração de sistemas, na qual preciso realizar uma consulta sql e exportar estes dados para txt ou xml. Como o firebir não suporta xml sem problemas de utilizar txt.
Consegui realizar a exportação manualmente através da sintaxe a baixo:


output C:\\testeexportacao.txt;

SELECT sd.pront AS PRONTUARIO,
sd.reg AS REGISTRO,
rp.nome AS NOME,
rp.nasc AS NASCIMENTO,
rp.sexo AS SEXO,
sa.exame AS EXAME,
sa.data AS DATA,
sa.hora AS HORA

FROM sicadate AS sd INNER JOIN silanexa AS sa ON sd.id = sa.id_sicadate
LEFT JOIN ricadpac AS rp on sd.pront = rp.pront
WHERE sa.reg = 2394208;

output;

A questão é que preciso fazer de forma automática, ou seja sempre que for inserido dados em um tabela x, seja gerado este arquivo com
título aleatório, ficando sempre um arquivo para cada consulta. Tentei construir uma trigger amarrado nesta tabela mas não obtive sucesso.

Cheguei a ver em alguns forum a respeito do uso de tabela externa, mas ficou mei vago pra mim commo iria tratar para gerar estes arquivos.

Alguém poderia me ajudar por favor.

Desde já agradeço a atenção de todos!!!
Aleandro

Aleandro

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

21/11/2014

Boa Noite a todos!!

Estou com um projeto de integração de sistemas, na qual preciso realizar uma consulta sql e exportar estes dados para txt ou xml. Como o firebir não suporta xml sem problemas de utilizar txt.
Consegui realizar a exportação manualmente através da sintaxe a baixo:


output C:\\testeexportacao.txt;

SELECT sd.pront AS PRONTUARIO,
sd.reg AS REGISTRO,
rp.nome AS NOME,
rp.nasc AS NASCIMENTO,
rp.sexo AS SEXO,
sa.exame AS EXAME,
sa.data AS DATA,
sa.hora AS HORA

FROM sicadate AS sd INNER JOIN silanexa AS sa ON sd.id = sa.id_sicadate
LEFT JOIN ricadpac AS rp on sd.pront = rp.pront
WHERE sa.reg = 2394208;

output;

A questão é que preciso fazer de forma automática, ou seja sempre que for inserido dados em um tabela x, seja gerado este arquivo com
título aleatório, ficando sempre um arquivo para cada consulta. Tentei construir uma trigger amarrado nesta tabela mas não obtive sucesso.

Cheguei a ver em alguns forum a respeito do uso de tabela externa, mas ficou mei vago pra mim commo iria tratar para gerar estes arquivos.

Alguém poderia me ajudar por favor.

Desde já agradeço a atenção de todos!!!


Sem dúvida a solução para isso é o uso de TRIGGER. Por que você não consegiu ? Qual o erro ?
GOSTEI 0
Aleandro

Aleandro

21/11/2014

Boa Tarde Ronaldo, obrigado por ter respondido.
Me deparo com o seguinte erro a baixo:

[img]http://arquivo.devmedia.com.br/forum/imagem/398455-20141122-163931.png[/img]

Sabe dizer o que pode ser ?

Até mais!!
GOSTEI 0
Aleandro

Aleandro

21/11/2014

Estive filtrando um pouco mais pra verificar o que estava ocasionando este erro, aparenta ser algo na sintaxe do comando output, veja:

[img]http://arquivo.devmedia.com.br/forum/imagem/398455-20141123-214403.png[/img]

Alguém sabe dizer o que ocorre?
GOSTEI 0
Aleandro

Aleandro

21/11/2014

Estou desconfiado que não é possível utilizar o comando output e instrução SQL em uma triger se não for para uma estrutura de condição.

AS

declare variable caminho char(30);
declare variable nome_arquivo char(12);
declare variable extensao char(4);
declare variable ultimo_id integer;

BEGIN

caminho = 'C:\';
nome_arquivo = 'testeexportacao';
extensao = '.txt';

output caminho+arquivo+extensao;

SELECT sd.pront AS PRONTUARIO,
sd.reg AS REGISTRO,
rp.nome AS NOME,
rp.nasc AS NASCIMENTO,
rp.sexo AS SEXO,
sa.exame AS EXAME,
sa.data AS DATA,
sa.hora AS HORA

FROM sicadate AS sd INNER JOIN silanexa AS sa ON sd.id = sa.id_sicadate
LEFT JOIN ricadpac AS rp on sd.pront = rp.pront

WHERE sa.reg = (select reg from silanexa where id = (select max(id) from silanexa));

output;

END


Alguém já fez algo assim ?
GOSTEI 0
POSTAR