Estoy tratando de cargar un marco de datos a una tabla en el servidor SQL usando sqlSave(). Este dataframe tiene una marca de tiempo y me gustaría asignar la columna timestamp col a datetime col en sqlserver.sqlGuardar: Asignación de marcas de tiempo del marco de datos a las marcas de tiempo de SQL Server
Tengo dos problemas.
1. Correlaciona la marca de tiempo del marco de datos con un flotador. 2. Crea una tabla, pero no se cargan datos y aparece un error.
He aquí un ejemplo de trama de datos, mdf:
mdf <- structure(list(run = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("run_00",
"run_01", "run_02", "run_03", "run_04"), class = "factor"), slot = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("slot 3", "slot 4", "slot 5",
"slot 6"), class = "factor"), timestamp = structure(c(1320774563,
1320774624, 1320774686, 1320774747, 1320774809, 1320774871), class = c("POSIXct",
"POSIXt"), tzone = ""), channel = structure(c(1L, 1L, 1L, 1L,
1L, 1L), .Label = c("och01", "och02", "och09", "och10"), class = "factor"),
variable = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("num_blocks",
"num_collection", "num_corr_0", "num_corr_1", "num_uncorr_srow",
"post_fec_err_rate", "pre_fec_err_rate"), class = "factor"),
value = c(1, 62, 124, 185, 247, 309)), .Names = c("run",
"slot", "timestamp", "channel", "variable", "value"), row.names = c(NA,
6L), class = "data.frame")
> mdf
run slot timestamp channel variable value
1 run_00 slot 3 2011-11-08 12:49:23 och01 num_collection 1
2 run_00 slot 3 2011-11-08 12:50:24 och01 num_collection 62
3 run_00 slot 3 2011-11-08 12:51:26 och01 num_collection 124
4 run_00 slot 3 2011-11-08 12:52:27 och01 num_collection 185
5 run_00 slot 3 2011-11-08 12:53:29 och01 num_collection 247
6 run_00 slot 3 2011-11-08 12:54:31 och01 num_collection 309
Esto es lo que sucede cuando intento sqlSave a una base de datos SQL Server ...
> sqlSave(dbandle,mdf,tablename="mdf")
Error in sqlSave(dbandle, mdf, tablename = "mdf") :
[RODBC] Failed exec in Update
22018 0 [Microsoft][ODBC SQL Server Driver]Invalid character value for cast specification
Además, cuando miro a los tipos de datos de la mesa, no obtengo "fecha y hora" para la marca de tiempo. No tiene sentido para mí por qué RODBC correlacionaría una marca de tiempo POSIXct con algo que no fuera la fecha.
[rownames] [varchar](255) NULL,
[run] [varchar](255) NULL,
[slot] [varchar](255) NULL,
[timestamp] [float] NULL,
[channel] [varchar](255) NULL,
[variable] [varchar](255) NULL,
[value] [float] NULL
¿Cómo puedo evitar esto?