2011-04-19 27 views
51

¿Alguien tiene un ejemplo de cadena de conexión para usar RODBC y conectarse a MS SQL Server 2005 o 2008.SQL Server RODBC Conexión

Gracias.

+7

La mayoría de las preguntas sobre la cadena de conexión se pueden responder en [connectionstrings.com] (http://connectionstrings.com/) –

Respuesta

86
library(RODBC) 
dbhandle <- odbcDriverConnect('driver={SQL Server};server=mysqlhost;database=mydbname;trusted_connection=true') 
res <- sqlQuery(dbhandle, 'select * from information_schema.tables') 
+1

Estoy intentando esto pero obtengo el error "SQL Server no existe o acceso denegado". ¿Tienes que ingresar un nombre de usuario/contraseña? También tengo un dsn en mi sitio remoto, pero esto no parece ser mencionado. Los documentos RODBC no me quedaron muy claros – pssguy

+3

El ejemplo usa la opción "trusted_connection = true" para la autenticación automática de Windows. También puede proporcionar username = ... y password = ... como parámetros en la cadena de conexión. – Henrico

+12

en realidad para mí 'username' y' password' no funcionó - tuve que proporcionar los parámetros 'uid = ...;' y 'pwd = ...;'. – Seb

8

Tomado de a posting to r-help:

library(RODBC) 
channel <- odbcDriverConnect("driver=SQL Server;server=01wh155073") 
initdata<- sqlQuery(channel,paste("select * from test_DB .. 
test_vikrant")) 
dim(initdata) 
odbcClose(channel) 
+0

¿Cómo harías esto desde Mac OSX? ¿Mismo camino? ¿Es eso posible, con el requisito de inicio de sesión de Windows? – mikebmassey

+0

Parece poco probable que esto funcione con la misma máquina con MS SQL Server en una Mac, pero con algún tipo de arreglo de terminal de acceso remoto, tal vez. –

+0

cómo se debe escribir este comando para trabajar en Linux? –

0

En primer lugar hay que crear/configurar DSN (conexión ODBC con específica DB)

A continuación, instalar RODBC biblioteca.

library(RODBC) 
myconn <-odbcConnect("MyDSN", uid="***", pwd="*******") 

fetchData<- sqlQuery(myconn, "select * from tableName") 
View(fetchData) 
close(myconn) 
1

Intente utilizar RSQLS paquete: https://github.com/martinkabe/RSQLS

datos empujones muy rápidos desde hoja.de.datos a SQL Server o tira de SQL Server a hoja.de.datos.

Ejemplo:

library(devtools) 
install_github("martinkabe/RSQLS") 
library(RSQLS) 

cs <- set_connString("LAPTOP-USER\\SQLEXPRESS", "Database_Name") 
push_data(cs, dataFrame, "dbo.TableName", append = TRUE, showprogress = TRUE) 
df <- pull_data(cs, "SELECT * FROM dbo.TableName", showprogress = TRUE) 

esta solución es mucho más rápido y más robusto que RODBC :: sqlSave o DBI :: dbWriteTable.