【发布时间】:2018-10-14 02:58:36
【问题描述】:
我正在使用 R 库 (RODBC) 导入 sql 存储过程的结果并将其保存在数据框中,然后使用 write.table 导出该数据框以将其写入 xml 文件(来自 sql 的结果是xml 输出) 无论如何,R 正在截断字符串(从 sql 导入的 xml 结果)。 我试图找到一个函数或一个选项来扩展 R 数据框单元格的大小/长度,但没有找到任何 我还尝试在 write.table 语句中使用 sqlquery 来忽略使用数据框,但它也不起作用,从 sql 导入的数据总是被截断。 任何人都有任何可以帮助我的建议或答案。 这是我的代码
#library & starting the sql connection
library(RODBC)
my_conn<-odbcDriverConnect('Driver={SQL Server};server=sql2014;database=my_conn;trusted_connection=TRUE')
#Create a folder and a path to save my output
x <- "C:/Users/ATM1/Documents/R/CSV/test"
dir.create(x, showWarnings=FALSE)
setwd(x)
Mpath <- getwd()
#importing the data from sql store procedure output
xmlcode1 <- sqlquery(my_conn, "exec dbo.p_webDefCreate 'SA25'", stringsAsFactors=F, as.is=TRUE)
#writing to a file
write.table(xmlcode1, file=paste0(Mpath,"/SA5b_def.xml"), quote = FALSE, col.names = FALSE, row.names = FALSE)
我得到的是不是完整输出的纯文本。 下面的代码是我如何找到我的字符串的当前长度
stri_length(xmlcode1) [1] 65534
【问题讨论】:
-
嗨本杰明,这个问题没有回答我的问题,我的存储过程结果是 xml,而不是我可以尝试使用它的列大小或其他什么的表。该 xml 输出被读取为一个字符串,然后保存到一个 xml 文件中,它应该被视为 xml 但它不会发生,因为它被截断了。当我使用具有较短结果的不同表名运行存储过程时,一切运行顺利,但结果不长
-
你是对的。我没有意识到您没有从表中提取数据。恐怕我没有给你一个好的解决方案。也许试试
DBI风格的界面? (基于 ODBC 驱动程序的限制,我不确定它会有多好) -
不幸的是我不能使用 BDI,我只限于我的代理所拥有的 R 包,我们不允许下载任何东西,他们有某种程序他们去在下载任何软件包之前通过。你知道我可以将导入的字符串分成两半并将其保存在两个数据帧中的方法吗,因为我可以在写入文件时将这两者结合起来
标签: r string dataframe truncate rodbc