[firebase-br] Procedure Exportando Arquivo Texto
Sandro Souza
escovadordebits em gmail.com
Qua Out 17 11:52:48 -03 2012
Bom dia/tarde/noite Frederico.
Primeiro, você deve habilitar o acesso do Firebird à arquivos externos às
suas bases de dados.
Para isso, edite o arquivo "firebird.conf", e localize a variável/parâmetro
"ExternalFileAccess".
Se houver um caracter "#" no início da linha, remova-o, pois esse caracter
comenta todo o restante da linha.
Esse parâmetro "ExternalFileAccess" controla o acesso aos arquivos externos
às suas bases de dados. E pode ter 3 tipos de acesso. São eles:
1 - Sem acesso a qualquer arquivo externo.
Nessa situação, o Firebird não permitirá o acesso a qualquer arquivo
externo à sua base de dados.
Exemplo: ExternalFileAccess=None
2 - Acesso restrito aos arquivos de determinadas pastas/diretórios.
Nessa situação, o Firebird só permitirá o acesso a qualquer arquivo que
esteja em alguma das pastas/diretórios informadas (separe-as com
ponto-e-vírgula).
Exemplo: ExternalFileAccess=C:\Meus
Arquivos;D:\Sistemas\XYZ\Dados\Exportação
3 - Acesso completo a qualquer arquivo de qualquer pasta/diretório.
Nessa situação, o Firebird não fará qualquer restrição de acesso, lembrando
que a restrição será efetuada apenas pelos direitos do usuário que o
Firebird está utilizando para executar (system, administrador, fulano,
beltrano, etc...).
Exemplo: ExternalFileAccess=Full
Vamos supor que você escolheu o acesso completo (Full). Agora vamos criar
uma tabela de exemplo, de onde vamos ler os registros e exportá-los
diretamente para um arquivo texto.
*CREATE TABLE FUNCIONARIOS(
-- Chave primária.
CODIGO INTEGER NOT NULL,
-- Nome completo.
NOME VARCHAR(200) CHARACTER SET ISO8859_1 NOT NULL COLLATE PT_BR,
-- CPF sem máscara.
CPF VARCHAR(11) CHARACTER SET ISO8859_1 NOT NULL COLLATE PT_BR,
-- Regra da chave primária.
CONSTRAINT PK_FUNCIONARIOS PRIMARY KEY(CODIGO),
-- Regra de unicidade do CPF (permite homônimos, mas não funcionários com
o mesmo CPF).
CONSTRAINT UK_FUNCIONARIOS_CPF UNIQUE(CPF));*
Vamos supor que você já inseriu dados na tabela FUNCIONARIOS. Agora a
missão é exportar esses dados para o arquivo texto
"C:\Temp\Funcionarios.txt".
Vamos criar uma tabela que residirá no arquivo externo
"C:\Temp\Funcionarios.txt", ou seja, essa nova tabela será o próprio
arquivo texto a ser gerado. Como se trata de um arquivo texto, utilizaremos
apenas colunas/campos do tipo CHAR, pois os outros tipos resultarão em
dados binários.
*CREATE TABLE EXPORTACAO EXTERNAL FILE 'C:\Temp\Funcionarios.txt' (
-- Nome completo do funcionário.
NOME CHAR(200) CHARACTER SET ISO8859_1 NOT NULL COLLATE PT_BR,
-- CPF do funcionário.
CPF VARCHAR(11) CHARACTER SET ISO8859_1 NOT NULL COLLATE PT_BR,
-- Quebra de linha de texto (caracteres CR + LF = CHR(13) + CHR(10) no
caso do MS Windows).
CRLF CHAR(2));*
Nesse momento, o arquivo "C:\Temp\Funcionarios.txt" ainda não será criado,
apenas quando começarmos a inserir os registros/linhas nessa tabela externa
é que o arquivo será criado.
Agora vamos exportar os dados, inclusive ordenando pelo nome dos
funcionários.
*INSERT INTO EXPORTACAO SELECT NOME,CPF FROM FUNCIONARIOS ORDER BY NOME;
COMMIT;*
O arquivo texto foi criado com sucesso, agora podemos excluir essa tabela
externa, caso não precisemos mais dela.
*DROP TABLE EXPORTACAO;*
Nota: Excluindo a tabela externa não exclui também o respectivo arquivo.
Então pode excluí-la sem problema algum.
Esse é apenas um pequeno exemplo. Espero que lhe sirva para suprir as suas
necessidades.
Espero ter ajudado mais que atrapalhado. :D
Em 17 de outubro de 2012 09:53, Frederico Godoi
<frederico.godoi em gmail.com>escreveu:
> Bom dia a todos.
>
> Alguém poderia me passar um pequeno exemplo de uma procedure direta do
> Firebird, fazendo um SQL e escrevendo o resultado em um arquivo texto ?
>
> Obrigado
>
> --
> Frederico Godoi
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista