[firebase-br] Rotina no banco para Ler Arquivo Texto
Cléber Moisés
cleber.moises em hotmail.com
Sáb Out 8 15:12:33 -03 2005
Felipe, você precisa editar o arquivo firebird.conf e colocar esta linha lá
sem as aspas, vai funcional em qualquer diretório.
"ExternalFileAccess = Full"
Para o Mr.Mothman.
Eu já utilizei esta solução em Windows e funciona muito bem, mas quando
precisei utilizar para um arquivo .csv, não funciona, devido ao tamanho da
linha ser variável, existe alguma solução neste sentido?
Atenciosamente,
Cléber Moisés
Virtual Age Solution Provider (Associado à RP Métodos Contábeis Ltda)
Auditoria e Desenvolvimento de Sistemas
Fone : (0xx51) 3227-8883 (RP Escritórios)
Celular: (0xx51) 9113-0523
>From: Felipe Giotto <felipe em metasoftware.com.br>
>Reply-To: FireBase <lista em firebase.com.br>
>To: FireBase <lista em firebase.com.br>
>Subject: Re: [firebase-br] Rotina no banco para Ler Arquivo Texto
>Date: Sat, 08 Oct 2005 12:13:20 -0300
>
>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
>>
>
>
>______________________________________________
>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
_________________________________________________________________
MSN Messenger: converse online com seus amigos .
http://messenger.msn.com.br
Mais detalhes sobre a lista de discussão lista