将新列添加到R中的访问ODBC数据库中的现有表

时间:2016-04-05 14:03:32

标签: sql r odbc ms-access-2010

我正在尝试使用R。

向访问中的现有表添加新列

我无法弄清楚这样做的方法。这就是我试过的:

install.packages("RODBC")
require(RODBC)

channel <- odbcConnect("Access01", believeNRows=FALSE)
df <- sqlFetch(channel, "Customers")
df

 ID Last_Name First_Name  Email_Address Business_Phone Home_Phone Mobile_Phone Fax_Number        Address
1  1       Sam      Marty  mlast@123.com     7771234567 8882626262   9998283838 5551717171   123 Main St.
2  2       Sam      Sally sfirst@123.com     5557778888 5558889999   5559991111 5552223333 234 Second Ave
      City State_Province ZIP_Postal_Code Country_Region Sex Date_of_birth
1 Anywhere             ST           55555            USA   M    1960-02-03
2   guirao             ST           22222            USA   f    1975-12-12


df <- cbind(df, test=c("A", "B")
df

 ID Last_Name First_Name  Email_Address Business_Phone Home_Phone Mobile_Phone Fax_Number        Address
1  1       Sam      Marty  mlast@123.com     7771234567 8882626262   9998283838 5551717171   123 Main St.
2  2       Sam      Sally sfirst@123.com     5557778888 5558889999   5559991111 5552223333 234 Second Ave
      City State_Province ZIP_Postal_Code Country_Region Sex Date_of_birth test
1 Anywhere             ST           55555            USA   M    1960-02-03    A
2   guirao             ST           22222            USA   f    1975-12-12    B


sqlUpdate(channel, df, tablename = "Customers", index="ID")

**Error in sqlUpdate(channel, df, tablename = "Customers", index = "ID") : 
  data frame column(s) test not in database table**

我也试过使用sqlSave命令但据我所知它只是让你追加新的行。 这是数据库结构问题还是我对R命令做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

看起来sqlUpdate()不会自动改变表的结构(不是我期望的那样)。所以,你可能需要像

这样的东西
sqlQuery(channel, 'ALTER TABLE Customers ADD COLUMN test TEXT(1)')
在尝试应用更新之前