我正在尝试使用R中的RODBC
库通过查询从Microsoft SQL Server获取数据,但是即使我设置了believeNRows=FALSE
,我得到的数据也不完整。Microsoft SQL Server 版本是SQL Server 2016 SP1 CU3
R 代码如下所示:
library(RODBC)
sql.server = 'GDCSCTDDBSWA01'
database.name = 'Data.Analytics'
sql.string = 'select * from [Data.Analytics].[dbo].[Table]'
db.string <- sprintf("driver={ODBC Driver 13 for SQL Server}; server=%s;database={%s}; trusted_connection=yes", server , database.name)
db.channel <- odbcDriverConnect(db.string, believeNRows=FALSE)
itin.data <- data.table(sqlQuery(db.channel, sql.string))
close(db.channel)
它只返回大约 1500 行数据(每次运行的确切行数会发生变化,但大小大致相同(。但是,当我在 SQL Server Management Studio Microsoft运行查询时,它工作正常。
为了消除网络问题的可能性,我也尝试了pyodbc
,它工作正常。python代码如下:
import pyodbc
connection= pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=GDCSCTDDBSWA01;DATABASE={Data.Analytics};trusted_connection=yes')
cursor = connection.cursor()
sql = 'select * from [Data.Analytics].[dbo].[Table]'
cursor.execute(sql)
dataList = cursor.fetchall()
connection.close()
有谁知道是什么原因导致RODBC
失败?
在 sqlQuery 语句中设置believeNRows = FALSE
应该拉取所有行。
sqlQuery(myconn, "select * from table", believeNRows = FALSE)