R中的RODBC包创建带引号的列名...为​​什么?

时间:2015-08-06 17:23:49

标签: r rodbc

所以,我使用R中的RODBC包来编写和读取我的数据库,这就是:

让我们使用mtcars作为示例

我将mtcars保存到我的数据库:

sqlSave(con, mtcars, "MTCARS",rownames = F)

然后我读了我刚刚保存的内容:

sqlQuery(con,"select * from MTCARS")

完美!它有效...现在让我们试试这个:

sqlQuery(con,"select mpg from MTCARS")
[1] "42S22 904 [Oracle][ODBC][Ora]ORA-00904: \"MPG\": invalid identifier\n"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select mpg from MTCARS'"

所以我检查了数据库,并用引号保存了列名!因此,为了我的查询工作,我必须这样做:

sqlQuery(con,"select \"mpg\" from MTCARS")

为什么呢?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Oracle通常只使用大写列名。在进程的某个时刻,数据框列名被引用,因为它意识到它们不是大写的。我不确定这是否发生在RODBC,驱动程序或数据库本身。

在任何情况下,首先将列名转换为大写似乎可以解决问题。