Tôi đang cố tải lên khung dữ liệu vào bảng trong máy chủ sql bằng cách sử dụng sqlSave(). Biểu dữ liệu này có dấu thời gian trong đó và tôi muốn ánh xạ dấu thời gian col thành giá trị giờ cao điểm trong sqlserver.sqlSave: Ánh xạ dấu thời gian biểu dữ liệu vào dấu thời gian SQL Server
Tôi gặp phải hai vấn đề.
1. Nó ánh xạ dấu thời gian của khung dữ liệu vào phao. 2. Nó tạo bảng nhưng không có dữ liệu nào được tải lên và tôi gặp lỗi.
Dưới đây là một ví dụ khung dữ liệu, 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
Đây là những gì sẽ xảy ra khi tôi cố gắng sqlSave đến một cơ sở dữ liệu 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
Ngoài ra, khi tôi nhìn vào các kiểu dữ liệu của bảng, tôi không nhận được "datetime" cho dấu thời gian. Nó không có ý nghĩa với tôi tại sao RODBC sẽ ánh xạ một timetamp POSIXct cho bất cứ điều gì khác hơn là datetime.
[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
Làm cách nào để giải quyết vấn đề này?