【发布时间】:2019-10-28 07:10:23
【问题描述】:
这是运行数月的遗留 R 代码。我能够从 R 读取/删除 Teradata 中的表,但无法从数据帧将数据写入表中。
我尝试过删除表并重新创建和写入不同的数据框。
sqlSave(ch, df, tablename = paste("scenario.table_storetype"),rownames=F)
我收到以下错误
sqlColumns(channel, tablename)[4L][, 1L] 中的错误:错误的数量 尺寸追溯:
1. sqlSave(ch, df, tablename = paste("scenario.table_storetype"), .rownames = F, 更安全 = FALSE, append = T)
2. sqlwrite(channel, tablename, dat, verbose = verbose, fast = fast, .test = test, nastring = nastring)
dput(head(df))
输出: 结构(列表(预测 = c(36659805.75、28117111.75、27005618.75、 33650734.4166667, 27243750.75, 26907919.0833333), 实际 = c(38293943, 29892143, 27016674, 33524728, 27252399, 26521098), BC = c("准备好的沙拉、水果和蔬菜", “准备沙拉,水果和蔬菜”,“准备沙拉,水果和蔬菜”, “准备沙拉,水果和蔬菜”,“准备沙拉,水果和蔬菜”, “准备沙拉、水果和蔬菜”),周期 = 201904:201909,如何 = c(“a_tslm_mape”, “a_tslm_mape”、“a_tslm_mape”、“a_tslm_mape”、“a_tslm_mape”、“a_tslm_mape” )), .Names = c("forecast", "actual", "BC", "period", "how"), row.names = c(NA, 6L), class= "data.frame")
dput(head(df))
四舍五入后 - 输出: 结构(列表(预测 = c(36659805.75、28117111.75、27005618.75、 33650734.42, 27243750.75, 26907919.08), 实际 = c(38293943, 29892143, 27016674, 33524728, 27252399, 26521098), BC = c("准备好的沙拉、水果和蔬菜", “准备沙拉,水果和蔬菜”,“准备沙拉,水果和蔬菜”, “准备沙拉,水果和蔬菜”,“准备沙拉,水果和蔬菜”, “准备沙拉、水果和蔬菜”),周期 = 201904:201909,如何 = c(“a_tslm_mape”, “a_tslm_mape”、“a_tslm_mape”、“a_tslm_mape”、“a_tslm_mape”、“a_tslm_mape” )), .Names = c("forecast", "actual", "BC", "period", "how"), row.names = c(NA, 6L), class= "data.frame")
【问题讨论】:
-
您的 df 在列和行中有多大:
dim(df)?尝试减少行并进行测试。 ODBC 驱动程序可能会施加限制。 -
@Parfait 我尝试写单行但没有帮助。我能够使用 sqlQuery 命令手动提供值插入一行,但 sqlSave 不起作用
-
你能回答我的第一个问题吗?通过减少行,我的意思是保存前几行:
sqlSave(ch, head(df, 10), tablename = paste("scenario.table_storetype"),rownames=F)。您的问题可能是尺寸限制。 -
@Parfait df 的维度是 [396, 5]
-
您在 data.frame 中是否有嵌套对象,例如列表?请发布
dput(head(df)),以便我们查看其属性/尺寸。