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

RODBC package in R creates column names with quotes... why?

所以,我在 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")

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

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

无论如何,先将列名转换为大写似乎可以解决问题。