表格带有“。”在它的名字

时间:2014-01-06 18:36:58

标签: sql r rodbc

我试图使用sqlFetch。当我将表的名称更改为下划线而不是句点时,fetch工作正常。所以,如果我使用命令

sqlFetch(conn, "HelloWorld_40")

工作正常。不幸的是,我的朋友们都在使用表格的真实姓名

sqlFetch(conn, "HelloWorld.40")

然后它崩溃了,它告诉我

Error in sqlColumns(conn, "HelloWorld.40") : 
'HelloWorld.40': table not found on channel

我猜这个时期“。”是表的非法名称。但我不希望我的朋友改变它,因为很多人会受到影响。有没有办法可以调用表格,或者我必须秘密进入他们的数据库,在我使用它时更改名称,然后将其更改回一段时间(冒着我会忘记,有人会读,等等等等)

感谢。

3 个答案:

答案 0 :(得分:5)

将表名放在方括号中:

[HelloWorld.40]

答案 1 :(得分:2)

解析表名是sqlFetch的问题。不幸的是,它没有处理表引号,所以它在模式40中搜索表HelloWorld。您需要直接调用sqlQuery(带有引用的表名,MS SQL Server的括号):

sqlQuery(dbhandle, "SELECT * FROM [HelloWorld.40]") 

附注:您应该指定您正在使用的数据库。

答案 2 :(得分:1)

最佳分隔符是双引号 - 应该适用于大多数底层数据库:

"HelloWorld.40"

在MySQL中,您还可以使用后退标记(`):

`HelloWorld.40`

在SQL Server,Access和我认为Sybase中,你也可以使用方括号:

[HelloWorld.40]