R RODBC sqlSave - 按列名匹配

时间:2017-06-22 14:00:00

标签: r match rodbc

这里很难提供一个工作示例,所以我试着解释一下这个问题。

我在数据库tableDb中有一个表格,列ABC

我在R df中有一个数据框,其中包含ACB列。

现在我正在使用

sqlSave(channelToDb, dat = df, tablename = "tableDb", append = TRUE,
rownames = FALSE, fast = FALSE)

df中的数据保存到tableDb

问题是,来自B的{​​{1}}列的数据存储在df的{​​{1}}列和C的{​​{1}}中存储在tableDb列中。

所以C按列名称与两个表不匹配,只是按索引?

有没有办法按列名匹配?

1 个答案:

答案 0 :(得分:0)

最简单的方法是在保存前重新排序数据框:

df<-df[c("A", "C", "B")]

这将使数据框与表格的顺序相同,或者您可以使用临时数据框

df_to_table<-df[c("A", "C", "B")]

然后

sqlSave(channelToDb, dat = df_to_table, tablename = "tableDb", append = TRUE,
rownames = FALSE, fast = FALSE)

如果你想保持你的环境清洁和小,那么只需删除临时表......

rm(df_to_Table)

您将回到原始工作区,并在您的环境中使用原始df,并按正确顺序将变量保存到表中。