R:从文本文件运行多行 sql
Posted
技术标签:
【中文标题】R:从文本文件运行多行 sql【英文标题】:R: run multiple line sql from text file 【发布时间】:2011-07-26 11:04:45 【问题描述】:在R中,如何将多行文本文件(包含SQL)的内容导入多行SQL?
我研究了Import multiline SQL query to single string 并设法让一个简单的 sql 脚本工作。但是,当 SQL 需要一个新行时(即当您添加一个 SELECT 语句时),当您将所有 sql 脚本行放在一行中时,它就不起作用了。
sql .txt 文件如下所示:
CREATE TABLE #Countries (Country varchar(255), Region varchar(255))
INSERT INTO #Countries VALUES ('China', 'EM')
SELECT * FROM #Countries
R 代码如下:
fileconn<-file("R/sql.txt","r")
sqlString<-readLines(fileconn)
sqlString<-paste(sqlString,collapse="","")
sqlconn <- odbcDriverConnect(connection = ....)
sqlQuery(sqlconn,sqlString)
我也尝试过 CAT 和 GSUB,但我感觉当第三个语句在一行中的第二个语句之后出现问题。
谁能帮我解决这个问题?非常感谢。
【问题讨论】:
有人向here 提出了您可能感兴趣的类似问题。 【参考方案1】:有两种分隔 SQL 命令的方法。要么你分开寄。这就是通过在 for 循环中执行文件的每一行得到的结果,但是如果单个命令确实需要多行,那么你当然会遇到问题,对吧?分隔 SQL 命令的第二种方法是简单地以 ; 结束它们。如果你把它放在每个命令的末尾,你应该能够将任意数量的它们传递给单个字符串中的数据库。
【讨论】:
Nicloas,非常感谢您的快速回复。使用分号上传所有行。唯一的问题仍然是 sqlQuery 返回第一个结果集(将一行数据添加到临时表 - 这是空的)而不是 select 语句(应该返回 China/EM)。有没有办法从上传的字符串中获取最后一个结果集?谢谢。 不知道,似乎非常特定于实现。我想我会单独发送最后一个查询。这似乎是多余的代码,但实际上并非如此。您将构建代码和查询代码分开并使其明确。无论第二个查询是额外的文件、硬编码的查询,还是总是最后一行,请选择适合您的方案。任何会阅读您的代码的人(包括未来的您)都会很高兴看到您想要的结果,而不必怀疑“哪些查询会产生结果”? “众多查询中的哪一个...”应该在最后一句中;)以上是关于R:从文本文件运行多行 sql的主要内容,如果未能解决你的问题,请参考以下文章