[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