相关疑难解决方法(0)

RODBC和Microsoft SQL Server:截断长字符串

我试图使用R/RODBC从Microsoft SQL Server数据库查询变量.RODBC将字符串截断为8000个字符.

原始代码:截断255个字符(根据RODBC文档) library(RODBC) con_string <- odbcConnect("DSN") query_string <- "SELECT text_var FROM table_name" dat <- sqlQuery(con_string, query_string, stringsAsFactors=FALSE)

部分解决方案:在7999个字符后修改查询字符串截断文本. library(RODBC) con_string <- odbcConnect("DSN") query_string <- "SELECT [text_var]=CAST(text_var AS VARCHAR(8000)) FROM table_name" dat <- sqlQuery(con_string, query_string, stringsAsFactors=FALSE)

表/变量包含长达250,000个字符的文本字符串.我真的想和R中的所有文本一起工作.这可能吗?

@BrianRipley讨论了以下文档第18页的问题(但没有解决方案):https://cran.r-project.org/web/packages/RODBC/vignettes/RODBC.pdf

@nutterb RODBCext在GitHub上讨论了类似的问题:https: //github.com/zozlak/RODBCext/issues/6

已经看过关于SO的类似讨论,但没有使用RODBC和VARCHAR> 8000的解决方案.

RODBC sqlQuery()在返回varchar(MAX)时返回varchar(255)

RODBC字符串被截断

注意:

  • R 3.3.2
  • Microsoft SQL Server 2012
  • Linux RHEL 7.1
  • 用于SQL Server的Microsoft ODBC驱动程序

sql-server truncate r rhel rodbc

7
推荐指数
1
解决办法
1377
查看次数

RODBC sqlQuery()在返回varchar(MAX)时返回varchar(255)

我正在使用该RODBC包来查询数据库中的文本列.该数据库基于Microsoft SQL Server 2008 R2构建.SQL中列的数据类型是nvarchar(max).

但是,当我跑:

# Set up ODBC connection to CCWEB5 production server
# Note: default database is set to "CCSalary"
ccweb5.prod <- odbcConnect("ccweb5")

# Read in some job ad text
job.text <- sqlQuery(ccweb5.prod,"
  SELECT TOP 100
    ja.JobTitle,
    ja.JobText as 'JobText',
    LEN(ja.JobText) as 'JobTextLength'
  FROM JobStore.dbo.JobAd as ja (NOLOCK)
")
Run Code Online (Sandbox Code Playgroud)

在SQL中,我期待(对于顶行):

JobTitle                     JobText              JobTextLength
IT Field Service Technician  <text goes here...>  2742
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时: nchar(as.character(job.text[1,2]))

它返回:255.

所以我的问题是,导致这种截断的原因是什么,我该如何避免呢?谢谢!!

sql sql-server r

6
推荐指数
1
解决办法
2243
查看次数

标签 统计

r ×2

sql-server ×2

rhel ×1

rodbc ×1

sql ×1

truncate ×1