[firebase-br] Rotina no banco para Ler Arquivo Texto
Felipe Giotto
felipe em metasoftware.com.br
Sáb Out 8 12:13:20 -03 2005
Olá, Mr.Mothman...
Eu também me interessei por esse comando, mas pelo menos no meu caso,
com Windows, já havia tentado rodá-lo diversas vezes e nunca consegui,
muito menos dessa vez!! Todas as vezes recebo esta mensagem:
Access to external file "C:\EXEMPLO.TXT" is denied by server administrator
Já tentei copiar o meu arquivo em todas as pastas possíveis!! Na raiz,
na pasta Windows, na pasta do Firebird... Você sabe aonde eu posso
copiar esse arquivo de uma forma que ele possa ser acessado? Talvez o
problema seja nos arquivos de configuração do FB, não sei, sou
totalmente leigo nesse assunto, mestre!! :D
Desde já agradeço,
Felipe Giotto ;-)
Mr.Mothman wrote:
>Caro Marco Aurélio,
>
> Uma UDF não...
>
> Porém você pode, assim como no Oracle, fazer uso de uma tabela de
>referência externa...
>
> Exemplo?
>
> Imagine que você tenha uma tabela com a estrutura abaixo:
>
> TIPO CHAR (5)
> DESC VARCHAR (10)
> CEP VARCHAR(8)
> UF CHAR (2)
>
> Para importar dados para esta tabela, você precisaria de:
>
> 1) um arquivo com registros de tamanho fixo seguindo os tamanhos
>propostos acima;
> 2) uma tabela externa com campos de tamanho fixo seguindo os
>tamanhos propostos acima (no firebird 1.5 é necessário informar os
>paths dos arquivos externos. Vide arquivo firebird.conf no Linux. O
>arquivo texto acima deverá estar neste path antes de se criar a
>tabela.)
> 3) uma query para inserir dados na tabela destino interna os dados
>da tabela origem externa, com os devidos type castings.
>
> Observação: geralmente, todo registro num arquivo texto possui um
>finalizador de linha... No Windows este finalizador são os caracteres
>CR + LF (chr (13) + chr (10), carriage return + line feed, Enter +
>salto de linha). No Linux (o arquivo que está em anexo foi criado no
>Linux...) o finalizador de linha é o caracter Line Feed. Portanto, o
>último campo de sua tabela deverá ser um campo para comportar estes
>finalizadores.
>
> Vamos botar a mão na massa:
>
> 1) Configure seu Firebird para poder acessar o arquivo texto em
>anexo numa pasta qualquer e grave o arquivo que segue anexo nesta
>pasta;
> 2) crie a tabela proposta acima;
> 3) crie a tabela externa seguint a sintaxe abaixo:
>
> CREATE TABLE TESTE_EXT EXTERNAL '<PATH>/exemplo.txt'
> (
> TIPO CHAR (5),
> DESC CHAR (10),
> CEP CHAR(8),
> UF CHAR (2),
> NEWLINE CHAR (1)
> );
>
> Pronto. Neste ponto, caso você execute um select na tabela
>TESTE_EXT, os dados que existem no arquivo exemplo.txt serão listados
>e podem ser incluídos numa boa em outra tabela (na nossa tabela
>interna de exemplo...).
>
> Caso seja de interesse geral, posso escrever um artigo sobre este
>tema, inclusive com exemplos mais elaborados e com configurações para
>o Firebird Linux e Windows, porém o exemplo acima já é utilizável.
>
> Aguardo um feedback da comunidade.
>
> [ ]´s
>
> Mr.Mothman
>
>
>------------------------------------------------------------------------
>
>NOVOACIDADE DEF04001001SP
>NOVOBCIDADE NEW04501003SP
>NOVOCCIDADE VEL01521022SP
>NOVODCIDADE 01555032SP
>NOVOECIDADE RJ 21001001RJ
>NOVOFCIDADE 11111111
> NADA MESMO22222222
>NADA EM BRANCO 00000000AA
>
>
>------------------------------------------------------------------------
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista