Domanda

a mantenere tutti i nostri dati di laboratorio in un database Sybase. Quando voglio fare manipolazione e l'analisi dei dati che ho letto i dati in R con RODBC.

library(RODBC)
channellab <- odbcConnect("Labdata")
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen')

Fin qui tutto bene, se non che CGS.Specimen è un tavolo per intere nostre partecipazioni di laboratorio. Ci sono quasi 40 mila esemplari (righe) con 66 variabili. Ci vuole una quantità inutile di tempo per leggere, soprattutto quando me interessa solo nelle aziende di uno studio che ha circa 1000 esemplari. Il modo più ovvio per risolvere il problema sarebbe stato

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode="RP"')  

Ma quando corro che ricevo

  

[1] "42S22 -143 [Sybase] [ODBC Driver] [Adaptive Server Anywhere] Colonna non trovato: Colonna 'RP' non trovato" "[RODBC] ERRORE: Impossibile SQLExecDirect 'SELECT * FROM WHERE CGS.Specimen StudyCode = \ "RP \" '"

Ho giocato con virgolette e ho giocato con barre di fuga, ma purtroppo ho ottenuto da nessuna parte.

per esempio

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode= 'RP'  ')

Errore: simbolo inatteso "indivs <-sqlQuery (channellab, 'SELECT * da CGS.Specimen DOVE StudyCode =' RP"

indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP'  ")

Problemi con .Call (C_RODBCFetchRows, attr (canale, "handle_ptr"), max, buffsize,:   vettori di lunghezza negativi non sono consentiti

Cosa suggerisci?

È stato utile?

Soluzione

L'ultimo errore di segnalare è dalla funzione .Call alle RODBCFetchRows funzione C. Così il problema con le virgolette sembra essere risolto. Tuttavia, con il suddetto errore avete ancora un problema. Forse le righe non sono riportati correttamente (la funzione c tenta di allocare vettori basati su questo valore, ma non verifica per valori negativi). Prova:

indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP'", believeNRows = FALSE)

Altri suggerimenti

A cura:

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode=\'RP\'')  

Ok è possibile eseguire un'altra query in cui viene restituito alcuni dati?

WHERE StudyCode=StudyCode per esempio? Questo dà lo stesso errore su lunghezze -ve?

Ciò significa che quanto sopra è corretto per sfuggire al StudyCode. La lunghezza -Ve è un altro errore. Si può tornare non tutte le colonne con * ma colonne specifiche dove non ci sono nulli?

believeNRows opzione Try = FALSE. Questo ha funzionato per me su un errore simile (l'errore di lunghezza negativo).

Questa domanda è stata più al punto: Interrogazione Oracle DB da Revolution R utilizzando RODBC

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top