这里很难提供一个工作示例,所以我试着解释一下这个问题。
我在数据库tableDb
中有一个表格,列A
,B
,C
。
我在R df
中有一个数据框,其中包含A
,C
,B
列。
现在我正在使用
sqlSave(channelToDb, dat = df, tablename = "tableDb", append = TRUE,
rownames = FALSE, fast = FALSE)
将df
中的数据保存到tableDb
。
问题是,来自B
的{{1}}列的数据存储在df
的{{1}}列和C
的{{1}}中存储在tableDb
列中。
所以C
按列名称与两个表不匹配,只是按索引?
有没有办法按列名匹配?
答案 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
,并按正确顺序将变量保存到表中。