使用R,如何在SQL Server数据库上获取“dbo”参数?

问题描述 投票:0回答:1

我有一个西班牙语的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”

谢谢!

r sql-server odbc
1个回答
1
投票

不知道你的客户端环境是什么,我在ODBC + R + Linux + Sybase方面遇到了类似的问题。我能够查询数字列而不是字符列,接收相同的std::bad_alloc错误。你的Id字段可能是一个数字,而SELECT *正在拉入其他具有字符数据类型的列。

对我来说,解决方案是确保我使用的是支持8字节SQLLEN数据类型的ODBC驱动程序。在Linux上运行命令odbcinst -j向我显示我在RHEL Server 7.5 64位上运行的已安装的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

© www.soinside.com 2019 - 2024. All rights reserved.