RODBC,SQL Order By子句+字段ID =订单冲突

时间:2014-01-29 00:26:58

标签: sql sql-server r rodbc

这有意义吗?否则我没有看到错误。

使用RODBC,R为发出包含字段ID = Order的表的sqlQuery语句返回'Could not SQLExecDirect'错误。 SQL否则有效。然而,我可以使用sqlFetch将整个表读取到df(见下文)。

目标数据库位于SQL Server上。

表结构示例:

Taxon_Id = c(3000,3001,3002)
Group_Id = c(6,5,5)
Type = c('Fish','Fish','Fish')
Order = c('Petromyzontidae','Acipenseridae','Clupeidae')
Family = c('Petromyzontidae','Acipenseridae','Clupeidae')
txn = data.frame(Taxon_Id,Group_Id,Type,Order,Family)

发布到表的SQL示例:

txn2<-as.data.frame(sqlQuery(channel, paste('SELECT T.Taxon_Id,
           T.GroupId,
           T.Type,
           T.Order,
           T.Family
     FROM Taxon T
     ORDER BY 1

     '))   )

sqlFetch可以无错误地读取所有表字段。

txn<-as.data.frame(sqlFetch(channel,"Taxon"))

感谢您的评论。

1 个答案:

答案 0 :(得分:1)

这是您的查询:

SELECT T.Taxon_Id, T.GroupId, T.Type, T.Order, T.Family
FROM Taxon T
ORDER BY 1

在SQL(通常)和SQL Server(特别是)中,单词Order是保留字。你需要用双引号或方括号来逃避它:

SELECT T.Taxon_Id, T.GroupId, T.Type, T.[Order], T.Family
FROM Taxon T
ORDER BY 1