[R-br] RODBC - odbcConnect

Cleber N.Borges klebyn em yahoo.com.br
Quarta Outubro 26 18:49:30 BRST 2011


olha,
eu entendo 'driver' como sendo a camada de software
que consegue conectar-se com o banco de dados e que te vai te
fornecer uma outra camada pra acesso os dados...

quem souber explicar melhor, favor entrar com comentários mais técnicos 
aqui...

no resumo,
temos sorte que os 'drivers' para esse tal de 'paradox' já vem com o 
windão xp
(daí não precisa instalar nada nessa camada)
... é só avisar o windão onde estão os arquivos e fazer as devidas 
configurações!

o pipeline para isso seria algo como:


arquivosDB(paradox) <-> drivers ODBC <->  R+library(RODBC) <->  
*(interface aqui pro usuario trabalhar)*

o resto é saber os comandos do pacote RODBC...

eu olhei o help e tentei o seguinte:


 >
 > library(RODBC)
 > db <- odbcConnect(dsn='paradox')  ### dsn paradox já configurado para 
o DB
 >
 > # agora o lance é explorar a estrutura do bando de dados
 > # primeiro ponto: tentar descobrir quais são as TABELAS
 >
 > sqlTables( db )
                                               TABLE_CAT
1 C:\\DOCUMENTS AND SETTINGS\\CLEBER.PINKFLOYD\\DESKTOP
   TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
1 <NA>   E2D00007      TABLE <NA>
 >


parece haver uma tabela com nome:  E2D00007.................
o problema agora é saber pedir os registros dessa tabela
a função sqlQuery deve ser pra isso (eu imagino), no entanto...

 > sqlQuery( db, query='select * from E2D00007')
[1] "HY000 -5015 [Microsoft][Driver ODBC para Paradox] A tabela externa 
não está no formato esperado."
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select * from E2D00007'"


tem algum outro arquivo que vc possa fornecer para testar?

t+
cleber







Em 26/10/2011 17:34, Eder David Borges da Silva escreveu:
> Cleber / Benilton / Leornard
> Por parte para ver se entendi o problemas,
> Pelo oque li nos links do Leonard e Benilton, eu tenho que criar um
> DSN (Um arquivo de "texto" o qual guarda informações de drive, e mais
> um monte de coisa bem como um link de diretório dos arquivos) mescando
> com oque o Cleber informou o "paradox" por ele criado no ODBD Mananger
> é o DSN estou certo considerando a utilização do driver paradox?
> Quando ele deu:
>   library(OBDC)
>> db<- odbcConnect(dsn='paradox')
>> class(db)
> sendo dsn='paradox' o seu DSN, agora a duvida com que vou associar meu
> arquivo .DB neste odbcConnect para que eu consiga ler ele?
> Acho que as coisas estão ficando mais claras para min,
> Att
>
>
> Em 26 de outubro de 2011 17:16, Cleber N.Borges<klebyn em yahoo.com.br>  escreveu:
>> não sei usar banco de dados muito bem (to no nivel bem iniciante),
>> mas como eu uso o windão e dias atras eu esbarrei no tal do ODBC...
>> então vou dar um pitaco na esperança de que te ajude em alguma coisa...
>>
>> [ no winXP ]
>> vá no Painel de Controle ->  Ferramentas Administrativas
>> lá tem um Icone nomeado como 'Fonte de dados (ODBC)'
>>
>> eu fiz o download do seu arquivo pelo link que passou e coloquei no meu
>> desktop...
>>
>> com a caixa de dialogo do ODBC, tem uma aba com titulo: 'Fonte de dados do
>> sistema'
>> nesse frame/janelinha, tem um botão com o seguinte rotulo: 'Adicionar'
>> para seu deleite (hehehehehe) tem opção desse tal fulano Paradox por lá
>> (vai saber que diabos é isso!...), então escolha isso.
>> Em seguida vai abrir outra caixa de dialogo (janelinha)
>> pedindo um nome para essa conexão, invente um de seu agrado, eu aqui
>> chamei de paradox, tem um campo para colocar um descrição (ao seu gosto),
>> desmarque o botção de checagem (check button) que diz: 'Usar pasta atual'.
>> Você precisa desmarcar essa opção para poder navegar até a pasta que está o
>> arquivo .db.
>> ( no meu caso, navegar até o desktop).
>>
>> no R, eu usei os comandos:
>>
>>> library(OBDC)
>>> db<- odbcConnect(dsn='paradox')
>>> class(db)
>> [1] "RODBC"
>>> db
>> RODBC Connection 2
>> Details:
>>   case=nochange
>>   DSN=paradox
>>   DefaultDir=C:\DOCUMENTS AND SETTINGS\CLEBER.PINKFLOYD\DESKTOP
>>   DriverId=538
>>   FIL=Paradox 5.X
>>   MaxBufferSize=2048
>>   PageTimeout=5
>>
>> Não deu nenhum sinal de erro! kkkkkkkkkkkkkkkkk
>>
>> Não sei se isso estabelece uma conexão! TO CHUTANDO QUE SIM...
>>
>> fiz um teste bem idiota, com uma string qualquer!  (sting 'teste' pq sei que
>> não existe
>> nenhum dsn com esse nome)
>> e daí dá erro dizendo que não tem conexão
>>
>>> db2<- odbcConnect(dsn='teste')
>> Warning messages:
>> 1: In odbcDriverConnect("DSN=teste") :
>>   [RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver
>> Manager] Nome da fonte de dados não encontrado e nenhum driver padrão
>> especificado
>> 2: In odbcDriverConnect("DSN=teste") : ODBC connection failed
>> o resto é saber usar a library(RODBC), coisa que eu não sei...
>>
>> parece que precisar saber a estrutura do banco, eu tentei ver o help
>> da função *sqlQuery*
>> e usar o comando:
>>
>>> sqlQuery(channel=db, query='show databases')
>> [1] "42000 -3500 [Microsoft][Driver ODBC para Paradox] Instrução SQL
>> inválida. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' esperado."
>> [2] "[RODBC] ERROR: Could not SQLExecDirect 'show databases'"
>>
>> somente com esses 5 comandos sql, eu não sei explorar seu arquivo
>>
>> se não ajudar, pço desculpas pela minha ingenuidade...
>>
>> qdo achar o caminho das pedras, sugiro compartilhar o resultado
>>
>>
>> t+
>> cleber
>>
>>
>>
>>
>>
>>
>>
>>
>> Em 26/10/2011 15:58, Eder David Borges da Silva escreveu:
>>> Pessoal,
>>> Eu ainda estou tentando abrir o arquivo que tinha posto em outro post
>>> disponível em:
>>> http://www.leg.ufpr.br/~eder/E2D00007.DB
>>> Com a Ajuda do Leonard e Benilton consegui descobri que ele é paradox,
>>> até consegui abrir em em Acess importando como paradox, porem como
>>> tenho milhares deles preciso de uma rotina automática.
>>> Pelas minhas pesquisas o RODBC seria capaz de abri ele com a função
>>> odbcConnect, li o help dela procurei na internet e tive a infeliz
>>> ideia de colocar minha duvida como post na R-SIG-DB, e com toda a
>>> gentileza e educação do mundo O prof Bray Ripley respodeu leia o
>>> HELP...., porem pesquisei outros post na R-HELP e na R-SIG-DB vi que
>>> inúmeras pessoas tem a mesma duvida, de como utilizar a função e oque
>>> é o DSN e como declarar isso, realmente não tenho muita  experiencia
>>> com banco de dados, mas creio que utilizar a odbcConnect seja possível
>>> para um mero mortal como eu.
>>> Se alguém de livre e espontânea vontade, tem experiencia com essa
>>> função e quiser ajudar ficarei muito grato.
>>> Atenciosamente
>>> _______________________________________________
>>>



Mais detalhes sobre a lista de discussão R-br