我试图使用sqlFetch。当我将表的名称更改为下划线而不是句点时,fetch工作正常。所以,如果我使用命令
sqlFetch(conn, "HelloWorld_40")
工作正常。不幸的是,我的朋友们都在使用表格的真实姓名
sqlFetch(conn, "HelloWorld.40")
然后它崩溃了,它告诉我
Error in sqlColumns(conn, "HelloWorld.40") :
'HelloWorld.40': table not found on channel
我猜这个时期“。”是表的非法名称。但我不希望我的朋友改变它,因为很多人会受到影响。有没有办法可以调用表格,或者我必须秘密进入他们的数据库,在我使用它时更改名称,然后将其更改回一段时间(冒着我会忘记,有人会读,等等等等)
感谢。
答案 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]