使用R,如何获得" dbo" SQL Server数据库上的参数?

时间:2018-03-02 15:20:28

标签: r sql-server odbc

我有一个西班牙语的SQL Server数据库,我想从SELECT * table.name

获取结果

为此,我使用odbc库将R连接到数据库。

之后,我这样做:

dbSendQuery(con,"SELECT * FROM [database].[dbo].[table.name]")

这会给我一个错误:std :: bad_alloc

但如果我这样做:

dbSendQuery(con,"SELECT Id FROM [database].[dbo].[table.name]")

然后我获得了好成绩

我已经看到,只有当查询中涉及varchar类型的列名时,才会显示错误,所以我认为架构可能是这个问题的原因。

如果没有此错误,我该怎么办?架构是" dbo"

谢谢!

1 个答案:

答案 0 :(得分:1)

不知道您的客户端环境是什么,ODBC + R + Linux + Sybase 也遇到了类似的问题。我能够查询数字列而不查询字符列,从而收到相同的std::bad_alloc错误。您的Id字段可能是数字,而SELECT *则在其他列中提取字符数据类型。

对我来说,解决方案是确保我使用的是支持8字节SQLLEN数据类型的ODBC驱动程序。在Linux上,运行命令odbcinst -j向我显示,对于在64位RHEL Server 7.5上运行的已安装unixODBC版本2.3.1,SQLLEN大小为8。

默认情况下,Sybase驱动程序被符号链接到4字节版本。按照下面的说明,我确保我已链接到8字节版本,并且我的问题已解决。奇怪的是,通过isql发出命令时,我从未遇到过这些问题。也许您的SQL Server驱动程序可能会受到相同的影响。

http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc20155.1600/doc/html/san1361915533650.html

也将其发布在相关的GitHub问题之一中: https://github.com/r-dbi/odbc/issues/174#issuecomment-403106647