Gracias Javier! Ahi encontre la solucion, se puede usar de la siguiente forma:
varTypes = c(nomvrevariable1="datetime", nombrevariable2="varchar (2)") Era tan sencillo mi error que no podia encontrar la forma, escribia los nombres de las variables sin comillas y los tipos de variables con comillas, o cosas asi. Muchas gracias por tu tiempo y disposicion, espero q mi consulta sirva para otros. Abrazo! El 13 de julio de 2017, 11:11, Javier Marcuzzi < javier.ruben.marcu...@gmail.com> escribió: > Mira algo de esto, puede ser útil, para no enviar directamente en lenguaje > SQL (dos caminos para lo mismo, porque R lo escribe a SQL, salvo SQL server > 2016, el resto no entendería R). Disculpas por enviarlo muy en bruto, falta > trabajo al código, pero como usted ahora está conectado es lo más rápido > que puedo hacer. > > > > sqlSave(dbCon, dataSet, dbTable, append=TRUE, rownames=FALSE, > varTypes=varTypes, verbose=T) > > > > tmp <- sqlColumns(channel, correctTableName) > > varTypes = as.character(tmp$TYPE_NAME) > > names(varTypes) = as.character(tmp$COLUMN_NAME) > > > > o > > > > varTypes = c(somecolumn="datetime") > > > > Javier Rubén Marcuzzi > > > > *De: *Jose Ramirez Costa <joseramirezco...@gmail.com> > *Enviado: *jueves, 13 de julio de 2017 10:57 > > *Para: *Javier Marcuzzi <javier.ruben.marcu...@gmail.com> > *CC: *r-help-es <r-help-es@r-project.org> > *Asunto: *Re: [R-es] consulta por varTypes de sqlSave en RODBC > > > > Hola Javier, si no estoy entendiendo mal, lo q deseo hacer no se trata de > configurar los parametros SQL, sino solo de colocar un vector en el > argumento VarTypes de la funcion sqlSave. > > > > El manual especifica esa opcion, pero no da ningun ejemplo de como usarla. > > > > *varTypes an optional named character vector giving the DBMSs datatypes to > be used for* > > *some (or all) of the columns if a table is to be created.* > > > > En este pdf https://cran.r-project.org/web/packages/RODBC/ > vignettes/RODBC.pdf, solo se hace referencia al argumento en este parrafo > > > > *4.1 Data types when saving a data frame When sqlSave creates a table, > there is some choice as to the SQL data types used. The default is to > select the SQL data type from the R type via the typeInfo argument to > sqlSave. If this is not supplied (usual) a default mapping is looked up > using getSqlTypeInfo() or by interrogating sqlTypeInfo(). This will almost > always produce the correct mapping for numeric, integer and character > columns of up to 254 characters (or bytes). In other cases (include dates > and date-times) the desired SQL type can be specified for each column via > the argument varTypes, a named character vector with names corresponding to > (some of) the names in the data frame to be saved.* > > > > Muchas gracias por tu ayuda y disculpa si no entiendi bien alguna de tus > preguntas. > > > > Saludos > > > > El 13 de julio de 2017, 10:39, Javier Marcuzzi < > javier.ruben.marcu...@gmail.com> escribió: > > Estimado Ramirez Costa > > > > Si usted desea configurar los parámetros SQL podría escribirlos en > lenguaje SQL y enviarlos por medio de una consulta, por otro lado ¿el > manual especifica la opción que usted desea utilizar? Posiblemente está > documentado (no lo se). > > > > Javier Rubén Marcuzzi > > > > *De: *Jose Ramirez Costa <joseramirezco...@gmail.com> > *Enviado: *jueves, 13 de julio de 2017 10:31 > *Para: *Javier Marcuzzi <javier.ruben.marcu...@gmail.com> > *CC: *r-help-es <r-help-es@r-project.org> > *Asunto: *Re: [R-es] consulta por varTypes de sqlSave en RODBC > > > > 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@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 <joseramirezco...@gmail.com> > *Enviado: *miércoles, 12 de julio de 2017 12:33 > *Para: *r-help-es <r-help-es@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@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”.* > > > > > > > > -- > > "*“Que tudo pesado se torne leve, todo corpo, dançarino, e todo espírito, > pássaro.” * > *Nietzsche, "Assim Falou Zaratustra”.* > > > -- "*“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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es