EXportar consulta SQL para arquivo
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!!!
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
Curtidas 0
Respostas
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!!!
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
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!!
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
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?
[img]http://arquivo.devmedia.com.br/forum/imagem/398455-20141123-214403.png[/img]
Alguém sabe dizer o que ocorre?
GOSTEI 0
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 ?
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