gpt4 book ai didi

sql - 如何使用 R 从 SQL 数据库中检索很长的 XML 字符串?

转载 作者:行者123 更新时间:2023-12-04 23:58:32 24 4
gpt4 key购买 nike

我有一个脚本可以从 SQL 数据库中获取 XML 文件。这是我如何做到这一点:

library(RODBC)
library(XML)

myconn <- odbcConnect("mydsn")

query.text <- "SELECT xmlfield FROM db WHERE id = 12345"
doc <- sqlQuery(myconn, query.text, stringsAsFactors=FALSE)
doc <- iconv(doc[1,1], from="latin1", to="UTF-8")
doc <- xmlInternalTreeParse(doc, encoding="UTF-8")

但是,解析不适用于特定的数据库行,尽管当我将此字段的内容复制到单独的文件中并从文件中解析时它起作用了。经过两天的“反复试验”,我确定了主要问题。似乎以这种方式查询短 XML 文件不会引起任何问题,但是当我查询较大的文件时,字符串在 65534 个字符后被截断。因此,XML 文件的末尾丢失,无法解析该文件。

我认为这可能是我计算机上 ODBC 连接的总体限制。但是,另一个程序也使用 ODBC 从同一个数据库中获取同一个 XML 字段,这样做没有任何问题。所以我猜它是一个 R - 特定问题。

任何想法如何解决它?

最佳答案

我已经写信给包作者,最终得到了以下答复:

Your inability to read is not my problem, nor is it a reasonable excuse.

The manual says

'\item[Character types] Character types can be classified three ways:fixed or variable length, by the maximum size and by the character
set used. The most commonly used types\footnote{the SQL names for
these are \code{CHARACTER VARYING} and \code{CHARACTER}, but these
are too cumbersome for routine use.} are \code{varchar} for short
strings of variable length (up to some maximum) and \code{char} for
short strings of fixed length (usually right-padded with spaces).
The value of `short' differs by DBMS and is at least 254, often a
few thousand---often other types will be available for longer
character strings. There is a sanity check which will allow only
strings of up to 65535 bytes when reading: this can be removed by
recompiling \pkg{RODBC}.'


本手册可在 doc 中找到。 RODBC的目录包裹。此信息未包含在引用手册中。
与此同时,我找到了一个很好的解决方案来检索我的数据而不使用 RODBC ,我没试过重新编译这个包。但我希望这个答案对那些遇到相同问题的人有所帮助。

关于sql - 如何使用 R 从 SQL 数据库中检索很长的 XML 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com