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]]