与/sf/answers/2329882481/相关,我发现从SQL Server(2014)中提取数据的行为不一致.
library(RODBC)
sqlQuery(.conn, "CREATE TABLE r2test ( [mychar] [NVARCHAR](16), [mynum] [FLOAT])")
# character(0)
sqlQuery(.conn, "INSERT INTO r2test (mychar,mynum) VALUES ('1',3.141593),('2',6.283185)")
character(0)
str(sqlQuery(.conn, "SELECT * FROM r2test", stringsAsFactors = FALSE))
# 'data.frame': 2 obs. of 2 variables:
# $ mychar: int 1 2
# $ mynum : num 3.14 6.28
Run Code Online (Sandbox Code Playgroud)
在该示例中,我们看到了不期望的行为:mychar内部转换为整数的字符.根据前面提到的SO答案,该as.is选项会使这个失败,但是还有一个不幸的副作用,即强制将十进制表示的浮点数转换为字符串:
str(sqlQuery(.conn, "SELECT * FROM r2test", stringsAsFactors = FALSE, as.is = TRUE))
# 'data.frame': 2 obs. of 2 variables:
# $ mychar: chr "1" …Run Code Online (Sandbox Code Playgroud) 在RPostgresql中中断长时间运行查询的最佳方法是什么?
例如,我想查看表格的前10行并打算输入,
dbGetQuery(con,"
select * from big.table
limit 10
")
Run Code Online (Sandbox Code Playgroud)
但我有时会忽略"限制10"然后我的程序永远运行.从我的R终端按ctrl-C或停止按钮不起作用.我要么等待很长时间,然后看到完整的输出打印,否则我可以中止R进程.