R RODBC sqlSave-按列名匹配
这里很难提供一个工作示例,因此我尝试解释这个问题 我在数据库R RODBC sqlSave-按列名匹配,r,match,rodbc,R,Match,Rodbc,这里很难提供一个工作示例,因此我尝试解释这个问题 我在数据库tableDb中有一个表,其中列a,B,C 我在Rdf中有一个数据帧,其中包含a、C、B 现在我正在使用 sqlSave(channelToDb, dat = df, tablename = "tableDb", append = TRUE, rownames = FALSE, fast = FALSE) 从tableDb中的df保存数据 问题是,来自df的B列的数据存储在tableDb的C列中,而df的C列存储在B列中 那么sqlS
tableDb
中有一个表,其中列a
,B
,C
我在Rdf
中有一个数据帧,其中包含a
、C
、B
现在我正在使用
sqlSave(channelToDb, dat = df, tablename = "tableDb", append = TRUE,
rownames = FALSE, fast = FALSE)
从tableDb
中的df
保存数据
问题是,来自df
的B
列的数据存储在tableDb
的C
列中,而df
的C
列存储在B
列中
那么sqlSave
不是按列名匹配这两个表,而是按索引匹配
是否有按列名匹配的方法?最简单的方法是在保存之前对数据框重新排序:
df最简单的方法是在保存之前对数据帧重新排序:
dfYes,当然,这是一个选项,我目前正在这样做。但是我的现实世界的表有更多的列,我认为有更好的方法可以做到这一点。你可以自己编写一个函数,从数据库中读取字段名,并将它们作为临时帧中的列表放入,然后保存出来。你只需要给它一个数据库名、数据框和文件名,它就可以为你做所有的事情。是的,当然这是一个选项,我目前正在这样做。但是我的现实世界的表有更多的列,我认为有更好的方法可以做到这一点。你可以自己编写一个函数,从数据库中读取字段名,并将它们作为临时帧中的列表放入,然后保存出来。您只需要给它一个数据库名、数据帧和一个文件名,它就可以为您完成这一切。
sqlSave(channelToDb, dat = df_to_table, tablename = "tableDb", append = TRUE,
rownames = FALSE, fast = FALSE)