J'ai la question lorsque j'essaie de connecter mon R-Studio à Teradata. Ça me donne
Cependant, j'ai pu me connecter à Teradata à partir de cmd. p> Mon code utilise DBI Connection avec des paramètres standard. P> ERREUR: NANODBC / NANODBC.CPP: 983: 08001: [TERADATA] [DLL WSOCK32] (439) WSA E HostuNReach: Le serveur Teradata n'est pas accessible sur ce réseau code > p>
readRenviron("~/.Renviron")
databaseType <- "Teradata"
defaultDatabase <- "Test"
SERVER <- "tera2"
DATABASE <- "teradb"
driverList <- odbc::odbcListDrivers()
DRIVER <- as.character(subset(driverList, grepl(databaseType, driverList$name, ignore.case = TRUE))$name[1])
driverList <- odbc::odbcListDrivers()
DRIVER <- as.character(subset(driverList, grepl(databaseType, driverList$name, ignore.case = TRUE))$name[1])
queryData <- function(query) {
con <- openConnection()
queryDataRet <- data.frame(dbGetQuery(con, query))
dbDisconnect(con)
return(queryDataRet)
}
openConnection <- function() {
con <- dbConnect(odbc::odbc(),
Driver = DRIVER,
Server = SERVER,
DBCName = DATABASE,
UID = Sys.getenv("tera_user"),
PWD = Sys.getenv("tera_pass"))
#Note: passwords are stored in .Renviron
return(con)
}
testQuery <- function(){
query <- paste0 ("select * from test")
print(queryData(query))
}
testQuery()
3 Réponses :
pour Teradata ODBC Pilote, dbcname = est un nom de réseau (lequel pour d'autres pilotes alimentait généralement comme serveur =). Le mot-clé pour le schéma par défaut est la base de données =.
Essayez quelque chose comme P>
con <- dbConnect(odbc::odbc(), Driver = DRIVER, DBCName = SERVER, Database = defaultDatabase, UID = Sys.getenv("tera_user"), PWD = Sys.getenv("tera_pass"))
Vous pouvez également regarder à l'aide du pilote Teradata SQL pour R au lieu de ODBC.
Ne fonctionne pas lorsque je modifie DBCName à la base de données 'Erreur: NANODBC / NANODBC.CPP: 983: 08001: [Teradata] [ODBC] (10380) Impossible d'établir la connexion avec la source de données. Paramètres manquants: {[dbcname]} 'et' Erreur dans Find.Package ("Teradatasql"): Il n'y a pas de package appelé 'Teradatasql' '
Le package TERADATASQL doit être installé manuellement avec installer.backages code> comme indiqué si vous souhaitez utiliser cela au lieu de ODBC. Lorsque vous avez connecté avec succès, avez-vous utilisé "TERA2" ou "TERADB" (I.E. Server ou base de données dans le script ci-dessus)?
Il continue à dire que Teradatasql n'est pas pour R 3.5.1
R 3.5.1 devrait être pris en charge - même s'il doit être 64 bits, pas 32 bits. Pour minimiser la confusion, concentrez-vous sur l'une des méthodes de connexion, soit Teradatasql i> ou ODBC i>.
@ Fred. Géré pour l'installer mais la même erreur se présente. J'ai aussi essayé dplyr.teradata aussi. Nil chance. Il semble que tous les codes soient corrects et que quelque chose d'autre joue le rôle.
Il semble que tous les codes soient corrects et quelque chose d'autre joue le rôle que plusieurs itinéraires d'accès renvoient la même erreur. P>
"La même erreur" étant l'UTunreach wsock32? Cela pourrait indiquer un pare-feu ou une autre cause liée au réseau. Comment avez-vous connecté avec succès "de cmd"?
J'ai utilisé BTEQ et consulté des données et affichées
Et vous fournissez la même valeur pour DBCName (ODBC) ou hôte (TERADATASQL) en tant que "TDPID" (avant le nom d'utilisateur / nom d'utilisateur) que vous avez utilisé dans le succès BTEQ .Logon du même client?
@ Fred, j'utilise la même chose. Continué à travailler sur elle n'aura pas de chance.
OK, après plusieurs semaines, j'ai décidé d'avoir un coup d'œil à .Renviron et j'ai utilisé usethis :: edit_r_environ () code> pour vous assurer que tous les détails sont corrects et fonctionnent! Merci tout pour tout le soutien. P>
De la ligne de commande, essayez ceci et voyez si vous obtenez une réponse de prise: Telnet Tera2 1025
@access_granted comment puis-je le faire s'il vous plaît?
Type "Telnet Tera2 1025"
@access_granted Je suis capable de se connecter et de tirer des données de Teradata avec une invite de commande et BTEQ. Donc, pas sûr s'il s'agit d'un pare-feu ou d'autre chose dans le code.
Pas un pare-feu, sinon vous ne seriez pas en mesure de vous connecter via BTEQ. Jetez un coup d'œil à votre définition ODBC - cela pourrait être que vous vous connectez au mauvais hôte.