用于在 R 中合并文件的 ODBC 连接错误

Posted

技术标签:

【中文标题】用于在 R 中合并文件的 ODBC 连接错误【英文标题】:ODBC Connection error for merging files in R 【发布时间】:2016-12-30 14:18:14 【问题描述】:

我正在尝试使用 RODBC 包中的 R 中的 odbcConnectExcel2007 函数读取 excel 文件。在读取单个文件时,它正在工作。但是当我尝试使用 for 循环函数运行时,它会抛出以下错误

3 stop(sQuote(tablename), ": table not found on channel") 
2 odbcTableExists(channel, sqtable) 
1 sqlFetch(conn1, sqlTables(conn1)$TABLE_NAME[1]) 

下面是代码:-

file_list <- list.files("./Raw Data")
file_list

for (i in 1:length(file_list))

     conn1 = odbcConnectExcel2007(paste0("./Raw Data/",file_list[i])) # open a   connection to the Excel file
     sqlTables(conn1)$TABLE_NAME
     data=sqlFetch(conn1, sqlTables(conn1)$TABLE_NAME[1])
     close(conn1)

     data <- data[,c("Branch","Custome","Category","Sub Category","SKU"
                      "Weight","Order Type","Invoice Date")]


     if(i==1) alldata=data else
     alldata = rbind(alldata,data)
    


如果能提供任何帮助,我将不胜感激。 提前致谢。

【问题讨论】:

第一个工作表的名称是什么?尝试在循环内打印 file_list[i] 以查看导致错误的工作簿。 【参考方案1】:

我认为它与从 sqlTables(conn1)$TABLE_NAME 对象返回的带有引号的表名混淆了。尝试通过删除引号来操作表名。像这样的:

table <- sqlTables(conn1)$TABLE_NAME
  table <- noquote(table)
  table <- gsub("\'", "", table)

然后就这样做:

data=sqlFetch(conn1, table)

【讨论】:

以上是关于用于在 R 中合并文件的 ODBC 连接错误的主要内容,如果未能解决你的问题,请参考以下文章

c#用odbc连接mysql报错

如何在 matlab 中检查本机 ODBC 连接的状态?

Linux下ODBC连接HGDB报Could not SQLConnect错解决方法

Linux下ODBC连接HGDB报Could not SQLConnect错解决方法

R基础学习-- 连接sqlserver

使用informatica powercenter配置ODBC驱动连接transwarp的hive数据仓库的问题,急!