XLConnect-处理最后一张工作表将以静默方式退出数据库proc

时间:2019-03-07 19:08:23

标签: r excel xlconnect

这是一个棘手的问题。我还不能轻易想到MRE。

我正在遍历Excel工作簿中的最后x张工作表(通常x <10)。我阅读了每个工作表的(表格)内容,并将其转换为字符串形式的xml。我将该xmlstr传递给通过RODBC / RODBCext调用SQL Server过程的lapply函数。该存储过程将xmlstr转换(使用强制转换)为XML数据类型,并将其切细为可合并到目标表的结果集。真的是标准的东西。除了在工作簿中处理最后一张纸时,效果很好。这是可重现的。每天都有1张以dd-mm-yyyy格式命名的日期。如果最后一张纸代表今天的日期,则只有在明天有一张纸的情况下才会成功处理。以后每次可以从数据库内部完美转换最后一个xmlstr,而不会出现问题。该过程将以静默方式退出该过程,而不会出现任何错误,即使以xml强制转换在try / catch块中也无需在xml强制转换行完成该过程。故意将诸如DivBy0之类的错误正确地扔回到R客户端。如果我确保“今天”之前至少有一张纸,那么今天的纸将得到处理。

有什么想法吗?

我不确定如何解决此问题。有很多组件。建议表示赞赏。

已安装的资源如下...

> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.5 LTS

Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.6.0
LAPACK: /usr/lib/lapack/liblapack.so.3.6.0

locale:
 [1] LC_CTYPE=en_IE.UTF-8          LC_NUMERIC=C
 [3] LC_TIME=en_IE.UTF-8           LC_COLLATE=en_IE.UTF-8
 [5] LC_MONETARY=en_IE.UTF-8       LC_MESSAGES=en_IE.UTF-8
 [7] LC_PAPER=en_IE.UTF-8          LC_NAME=en_IE.UTF-8
 [9] LC_ADDRESS=en_IE.UTF-8        LC_TELEPHONE=en_IE.UTF-8
[11] LC_MEASUREMENT=en_IE.UTF-8    LC_IDENTIFICATION=en_IE.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] XLConnect_0.2-15     XLConnectJars_0.2-15 RODBCext_0.2.7
[4] RODBC_1.3-14         lubridate_1.7.4      dplyr_0.7.4
[7] zoo_1.7-14           XML_3.98-1.16

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.15     lattice_0.20-35  assertthat_0.2.0 grid_3.4.4
 [5] R6_2.2.2         magrittr_1.5     pillar_1.1.0     stringi_1.1.6
 [9] rlang_0.2.2      bindrcpp_0.2     tools_3.4.4      stringr_1.2.0
[13] glue_1.2.0       compiler_3.4.4   pkgconfig_2.0.1  rJava_0.9-10
[17] bindr_0.1        tibble_1.4.2

0 个答案:

没有答案