[R-es] consulta por varTypes de sqlSave en RODBC

Jose Ramirez Costa joseramirezcosta en gmail.com
Jue Jul 13 15:31:27 CEST 2017


Buen dia Javier, muchas gracias por tu ayuda y el script compartido.

Me va a servir como ayuda para seguir aprendiendo sobre RODBC pero no
encuentro una solucion para este problema puntual de poder definir el tipo
y ancho de las variables, q segun creo se hace con el argumento varTypes.

Si alguien tien algun ejemplo donde haya usado la SqlSave y VarTypes, me
sera de gran ayuda.

Abrazo a todos

2017-07-12 15:33 GMT-03:00 Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com>
:

> Estimado José Ramirez Costa
>
>
>
> Yo tengo un archivo donde guarde lo que realizaba cuándo aprendía, habría
> que ver si actualmente es así o hay cambios, por lo que usted dice creo que
> usa sql server, si no es así busco el archivo para otras bases de datos. Si
> es sqlserver se podría realizar con la ayuda de visual studio, hay una
> integración al respecto.
>
>
>
> Le copio y pego la forma que utilicé para aprender, espero que le sea útil.
>
>
>
>
>
> cn <- odbcDriverConnect(connection="Driver={SQL Server Native Client
> 11.0};
>
>                         server=localhost;
>
>                         database=far;
>
>                         trusted_connection=yes;")
>
> # DESKTOP-HEO7TLB
>
> cosa <- sqlFetch(cn,'cosa')
>
> cosa
>
>
>
> A <- c(1,2,3,4)
>
> B <- c(4,5,6,7)
>
> dat <- data.frame(A,B)
>
> colnames(dat) <- c("A", "B")
>
> sqlSave(cn, dat, tablename = "tblTest", rownames=FALSE, append=TRUE)
>
>
>
> cosa <- c("auto", "bici", "libro")
>
> cantidad <- c(2,4,7)
>
> dat <- data.frame(cosa, cantidad)
>
>
>
> colnames(dat) <- c("A", "B")
>
> sqlSave(cn, dat, tablename = "cosa",
>
>         rownames=FALSE,
>
>         colnames=TRUE,
>
>         append=TRUE,
>
>         addPK=TRUE,
>
>         fast=TRUE)
>
>
>
> # http://stackoverflow.com/questions/36202414/r-download-image-using-rvest
>
> # https://www.r-bloggers.com/parameterized-sql-queries/
>
> # https://cran.r-project.org/web/packages/RODBCext/
> vignettes/Parameterized_SQL_queries.html
>
>
>
> library(RODBCext)
>
> filterData <- data.frame('cosa'= c('libros'))
>
> data <- sqlExecute(cn, "SELECT * FROM prueba WHERE cosa = ?", filterData,
> fetch = TRUE)
>
> if(length(data$id) == 0)
>
> {
>
>   print ("no hay elementos")
>
> } else
>
> {
>
>   print ('hay elementos')
>
> }
>
>
>
> # generar lo que se inserta o actualiza
>
> id <- 1
>
> cosa <- "casa"
>
> cantidad <- 3
>
> valor <- 4.5
>
> dfDato <- data.frame(id,cosa, cantidad,valor)
>
> colnames(dfDato) <- c("id", "cosa","cantidad","valor")
>
> print(dfDato)
>
> insertar <- function(dfDato) {
>
>   dfNuevoDato <- data.frame(dfDato$cosa, dfDato$cantidad, dfDato$valor)
>
>   colnames(dfNuevoDato) <- c("cosa","cantidad","valor")
>
>   # Parameterized query
>
>    sqlExecute(cn, "INSERT INTO prueba
>
>               (cosa
>
>                 ,cantidad
>
>                 ,valor)
>
>               VALUES (?,?,?)", dfNuevoDato)
>
>   print(dfNuevoDato)
>
> }
>
>
>
> # comprobar si existe el id
>
> filterId <- data.frame('id'= dfDato$id)
>
> data <- sqlExecute(cn, "SELECT * FROM prueba WHERE id = ?", filterId,
> fetch = TRUE)
>
> if(length(data$id) == 0)
>
> {
>
>   print ('no existe el id')
>
>   insertar(dfDato)
>
> }else{
>
>   print('Existe el id')
>
>   # buscar la palabra si existe
>
>   filterPalabra <- data.frame('cosa'=dfDato$cosa)
>
>   data <- sqlExecute(cn, "SELECT * FROM prueba WHERE cosa like ?",
> filterPalabra, fetch = TRUE)
>
>   print(data)
>
>     if(length(data$cosa) > 0)
>
>     {
>
>       print ('existe debo actualizar')
>
>      # query <- "UPDATE cakes SET price = ? WHERE cake = ?"
>
>        query <- "UPDATE prueba
>
>        SET cosa = ?
>
>        ,cantidad = ?
>
>        ,valor = ?
>
>        WHERE id = ?"
>
>        sqlExecute(cn, query, dfDato)
>
>       print(dfDato)
>
>     }else{
>
>       print ('puedo insertar')
>
>       insertar(dfDato)
>
>     }
>
>   }
>
> #http://finzi.psych.upenn.edu/R/library/RODBC/html/sqlSave.html
>
>
>
> Javier Rubén Marcuzzi
>
>
>
> *De: *Jose Ramirez Costa <joseramirezcosta en gmail.com>
> *Enviado: *miércoles, 12 de julio de 2017 12:33
> *Para: *r-help-es <r-help-es en r-project.org>
> *Asunto: *[R-es] consulta por varTypes de sqlSave en RODBC
>
>
>
> Buen dia compañerxs de R, les traigo una pregunta bastante especifica.
>
>
>
> En el trabajo me estan requiriendo el uso de SQL, asi q estoy aprendiendo a
>
> usarlo desde R, con el paquete RODBC.
>
>
>
> Mi problema puntual es que al crear una tabla en el servidor SQL a partir
>
> de un data frame en R (usando la funcion sqlSave) no puedo definir el tipo
>
> de variables que quiero usar en el data frame.
>
>
>
> Segun entiendo esto se deberia poder hacer con el parametro vartypes, pero
>
> hasta ahora solo he podido cargar un vector q dice el tipo de variables
>
> (varchar, int, o numeric) pero no he podido indicarle el ancho q tiene cad
>
> variable.
>
>
>
> Esto en SQL se escribiria algo asi:
>
> [ACTA] int,
>
> [APENAC] varchar(25),
>
> [PESONAC] numeric(4,0),
>
>
>
> Alguien uso vartypes de esta forma?
>
>
>
> Desde ya gracias por el tiempo y un abrazo a todxs.
>
>
>
> --
>
> "*“Que tudo pesado se torne leve, todo corpo, dançarino, e todo espírito,
>
> pássaro.” *
>
> *Nietzsche, "Assim Falou Zaratustra”.*
>
>
>
>                 [[alternative HTML version deleted]]
>
>
>
> _______________________________________________
>
> R-help-es mailing list
>
> R-help-es en r-project.org
>
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>



-- 
"*“Que tudo pesado se torne leve, todo corpo, dançarino, e todo espírito,
pássaro.” *
*Nietzsche, "Assim Falou Zaratustra”.*

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es