如何将 .sql 文件的内容读入 R 脚本以运行查询?

新手上路,请多包涵

我已经尝试了 readLinesread.csv 功能,但后来不起作用。

这是 my_script.sql 文件的内容:

 SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees
WHERE HireDate >= '1-july-1993'

它保存在我的桌面上。

现在我想从我的 R 脚本运行这个查询。这是我所拥有的:

 conn = connectDb()

fileName <- "C:\\Users\\me\\Desktop\\my_script.sql"
query <- readChar(fileName, file.info(fileName)$size)

query <- gsub("\r", " ", query)
query <- gsub("\n", " ", query)
query <- gsub("", " ", query)

recordSet <- dbSendQuery(conn, query)
rate <- fetch(recordSet, n = -1)

print(rate)
disconnectDb(conn)

在这种情况下,我没有得到任何回报。我可以尝试什么?

原文由 user1367204 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 818
2 个回答

我自己在阅读 sql 文件时遇到了麻烦,并且发现如果 sql 中有任何单行注释,语法经常会被破坏。由于在 R 中您将 sql 语句存储为单行字符串,因此如果 sql 中有任何双破折号,它实际上会注释掉双破折号之后的任何代码。

这是我通常在读取要在 R 中使用的 .sql 文件时使用的函数。

 getSQL <- function(filepath){
  con = file(filepath, "r")
  sql.string <- ""

  while (TRUE){
    line <- readLines(con, n = 1)

    if ( length(line) == 0 ){
      break
    }

    line <- gsub("\\t", " ", line)

    if(grepl("--",line) == TRUE){
      line <- paste(sub("--","/*",line),"*/")
    }

    sql.string <- paste(sql.string, line)
  }

  close(con)
  return(sql.string)
}

原文由 Matt Jewett 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 readr 包中的 read_file() 函数。

 fileName = read_file("C:/Users/me/Desktop/my_script.sql")

您将获得一个带有所需文本的字符串变量 fileName

注意: 使用 / 代替 \\\

原文由 TheNewGuy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进