gpt4 book ai didi

mysql - 如何从 .sql 文件发送查询?

转载 作者:行者123 更新时间:2023-11-29 01:31:21 25 4
gpt4 key购买 nike

背景:

我正在使用 RMySQL 查询数据库;我一直在使用带引号的字符串成功执行此操作,但现在我想从 .sql 文件发送更长的查询。

sql文件在mypackage/inst/extdata/myquery.sql

问题:

myquery.sql 导入查询并将其提交到数据库的最佳方法是什么?

我尝试过的:

这是我正在处理的功能:

library(RMySQL)
library(mypackage)

myqueryfun <- function(...){
file <- system.file("extdata", "myquery.sql", package = "mypackage")
query <- SOMEFUN(file)
con <- dbConnect(...)
q <- dbSendQuery(con, query)
result <- fetch(q, n = -1)
return(result)
}

因此,我正在寻找函数 SOMEFUN 及其附加参数。我已经尝试过 scanreadLines,并且我已经尝试了这些函数的不同参数,例如 scan(file, sep = '\n', what = ' character') 我得到的最接近的是 writeLines(readLines(file)),但是我遇到了一些与解析文件相关的错误,比如对 writeLines(readLines ()):

Error in function (classes, fdef, mtable)  : 
unable to find an inherited method for function "dbSendQuery", for signature "MySQLConnection", "NULL"
Called from: stop("unable to find an inherited method for function \"", fdef@generic,
"\", for signature ", cnames)

如果查询是长度为 1 的字符向量,例如 "show tables;",我会得到预期的输出。

最佳答案

正如@Andre 所指出的,您正在寻找的函数将 scan 包装在 paste(scan(...), collapse = "") 中:

SOMEFUN <- function(file){
paste(scan(file, sep = "\n", what = "character"), collapse = "")
}

关于mysql - 如何从 .sql 文件发送查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418920/

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