R:从文本文件运行多行sql

R:从文本文件运行多行sql,sql,string,r,rodbc,rgui,Sql,String,R,Rodbc,Rgui,在R中,如何将多行文本文件(包含SQL)的内容导入多行SQL 我已经研究并设法使一个简单的sql脚本工作。但是,当SQL需要新行时(即添加SELECT语句时),将SQL脚本的所有行放在一行中是不起作用的 sql.txt文件如下所示: CREATE TABLE #Countries (Country varchar(255), Region varchar(255)) INSERT INTO #Countries VALUES ('China', 'EM') SELECT * FROM #C

在R中,如何将多行文本文件(包含SQL)的内容导入多行SQL

我已经研究并设法使一个简单的sql脚本工作。但是,当SQL需要新行时(即添加SELECT语句时),将SQL脚本的所有行放在一行中是不起作用的

sql.txt文件如下所示:

CREATE TABLE #Countries (Country varchar(255), Region varchar(255)) 
INSERT INTO #Countries  VALUES ('China', 'EM') 
SELECT * FROM #Countries
fileconn<-file("R/sql.txt","r")            
sqlString<-readLines(fileconn)           
sqlString<-paste(sqlString,collapse="","") 
sqlconn <- odbcDriverConnect(connection = ....)
sqlQuery(sqlconn,sqlString)
R代码如下所示:

CREATE TABLE #Countries (Country varchar(255), Region varchar(255)) 
INSERT INTO #Countries  VALUES ('China', 'EM') 
SELECT * FROM #Countries
fileconn<-file("R/sql.txt","r")            
sqlString<-readLines(fileconn)           
sqlString<-paste(sqlString,collapse="","") 
sqlconn <- odbcDriverConnect(connection = ....)
sqlQuery(sqlconn,sqlString)

有两种方法可以分离SQL命令。要么你分开送。这是通过在for循环中执行文件的每一行可以得到的结果,但是如果一个命令需要多行,那么当然会遇到问题,对吗?分离SQL命令的第二种方法是以;结尾;。如果将其放在每个命令的末尾,您应该能够在单个字符串中将任意多个命令传递给DB。

Nicloas,非常感谢您的快速响应。上传带有分号的所有行都有效。唯一的问题仍然是sqlQuery返回第一个结果集(向temp表中添加一行数据-为空),而不是select语句(应返回China/EM)。有没有办法从上传的字符串中获取最后一个结果集?谢谢。不知道,看起来很具体。我想我应该单独发送最后一个查询。这看起来像是多余的代码,但实际上不是。将建筑和查询代码分开,并使其显式化。无论这第二个查询是一个额外的文件、一个硬编码查询,还是始终是最后一行,请选择适合您的场景的查询。任何阅读您的代码的人(包括未来的您)都会很高兴看到您想要的结果,而不必怀疑“哪些查询创建了结果”?“哪些查询…”应该在最后一句中;)有人问了一个你可能感兴趣的类似问题。