2015-02-10 36 views
0

我试图自动化(在Win7系统上)R脚本从DB2数据库读取数据并将其写入文件,以进行处理由另一个系统。我的代码完美地运行在R gui中。于是我写了一个批处理文件来调用这个.r文件,并将结果输出到script.out中,如下所示。当我双击批处理文件时,一切都成功运行。当我安排一个任务来运行批处理文件时,R代码运行,从DB2数据库收集数据,但每次写入文件都失败,只保存来自sql查询的头文件。R,命令行,write.csv2到文件失败进入任务

R代码里面:

library(RJDBC) 

library(rJava) 

jcc = JDBC("com.ibm.db2.jcc.DB2Driver",".../db2jcc4.jar") 

conn = dbConnect(jcc,"xxx",user="xxxx",password="xxxx") 

bd1 = dbSendUpdate(conn, "set current schema PRODUCCION") 

bd1 = dbSendQuery(conn,paste("SELECT *FROM VW_tabla_1")) 

dat4<- fetch(bd1, n = -1) 

write.csv2(dat4,file = ".../bd1.csv",row.names = F) 

dbDisconnect(conn) 

批处理文件代码:

\Program Files\R\R-3.0.1\bin\x64\R.exe" CMD BATCH --vanilla --slave "C:\Users\abg\SkyDrive\Documents\dat.R" 

感谢帮助我。

+0

您可能需要将代码放在代码块中才能阅读 – 2015-02-10 02:33:21

回答

0

这不是一个答案,而是一个过长的评论。

看起来你很好地通过在不同条件下尝试它来调试它。我将建议下一步尝试找出失败的部分。似乎写入文件不是问题,所以我会跳过关于不同写作权限的所有部分。

  • 尝试向文件写入一些文本,而不是查询结果 - 测试write.csv行以预定方式工作。

  • 尝试虚拟查询,像select "a"但是还是假的查询DB2中的工作 - 那你实际上连接到数据库

  • 测试尝试选择从该表中的行数,并编写提交 - 该表实际上它

具有行如果我理解正确的事情,那么这些步骤应该失败,并给你一个想法,去哪里找下一个测试。祝你好运!

PS。你如何安排任务在Win 7下运行?

0

我终于解决了这个问题。在我的SQL查询中有特殊字符,如重音,在R gui中这些是可解释的,但不在计划任务中,所以解决方法是在sql查询中更改这些特殊字符,并且一切正常。