R sink()到数据库

时间:2013-12-16 16:44:34

标签: database r sink

sink()对于将错误记录到文件非常有用,而无需将所有内容都包装在tryCatch中。但是,我想登录到(SQLite)数据库表,而不是记录到文件。这可能吗?

更一般地说,使用sink(),我如何指定自己的函数来处理实际的写入过程?

3 个答案:

答案 0 :(得分:3)

sink转移到connection,而不是文件。要接收到数据库表,只需使用写入数据库表的连接。

dbc = dbconnection(host="mysql.example.com", table="logs",field="logtext")

然后打开与主机的数据库连接。然后你做:

sink(dbc)
print("stuff")
sink()

然后数据库连接代码执行INSERT INTO日志(时间,logtext)VALUES(“12-Jan-2001”“R输出到此处”) - 例如,如果要进行带日期戳记的日志条目。

所以你需要做的就是编写为数据库创建connection的函数。我认为必须在C级完成 - 我不知道你是否可以在纯R中创建新的连接类型。祝你好运。

答案 1 :(得分:1)

你可能想要capture.output()。它允许您将给定命令的输出保存到变量,并随意执行任何操作:

out <- capture.output({
    i <- 1
    cat(i, "\n")
    cat(i+1, "\n")
})

然后,您可以使用out变量存储到数据库等

答案 2 :(得分:0)

您可以使用write.csv(df,file =“〜/ df.csv”,append = TRUE)将数据框 df 输出为.csv,我认为这与您匹配需求(因为大多数软件读取.csv)。追加将新信息放在现有.csv的末尾,否则它将替换文件。

messups<-warnings()
write.csv(messups,file = "~/messups.csv",append=TRUE)