2011-07-26 6 views
3

R에서는 SQL을 포함하는 여러 줄 텍스트 파일의 내용을 여러 줄로 어떻게 가져올 수 있습니까?R : 텍스트 파일에서 여러 행 sql 실행

저는 Import multiline SQL query to single string을 공부했으며 간단한 SQL 스크립트 작업을 관리했습니다. 그러나 SQL이 새로운 라인을 요구할 때 (즉, SELECT 문을 추가 할 때), 모든 라인의 SQL 스크립트를 한 줄에 넣으면 작동하지 않습니다.

CREATE TABLE #Countries (Country varchar(255), Region varchar(255)) 
INSERT INTO #Countries VALUES ('China', 'EM') 
SELECT * FROM #Countries 

는 R 코드는 다음과 같습니다 : 같은

는 SQL .txt 파일 보이는 나뿐만 아니라 CAT 및 GSUB을 시도했습니다

fileconn<-file("R/sql.txt","r")    
sqlString<-readLines(fileconn)   
sqlString<-paste(sqlString,collapse="","") 
sqlconn <- odbcDriverConnect(connection = ....) 
sqlQuery(sqlconn,sqlString) 

,하지만 난 느낌이있어 그 세 번째 명령문이 한 줄에 두 번째 명령문을 따라갈 때 문제가 발생합니다.

누구든지이 문제를 해결할 수 있습니까? 많은 감사합니다.

+0

비슷한 질문이있을 수 있습니다 [여기] (http://stackoverflow.com/questions/4747768/rodbc-temporary-table-issue-when-connecting-to-ms-sql-server/4748281#4748281) 너에게 관심있어. – Chase

답변

3

SQL 명령을 구분하는 두 가지 방법이 있습니다. 둘 중 하나를 별도로 보내십시오. 이것은 for 루프에서 파일의 각 행을 실행하는 것만으로 얻을 수 있지만, 하나의 명령에 둘 이상의 행이 필요한 경우 어떻게 처리해야할까요? SQL 명령을 구분하는 두 번째 방법은 간단히 a로 끝내는 것입니다. 각 명령의 끝 부분에이 명령을 넣으면 원하는만큼 많은 명령을 단일 문자열로 DB에 전달할 수 있어야합니다.

+0

Nicloas, 귀하의 빠른 답변에 많은 감사드립니다. 모든 줄을 세미콜론으로 업로드하면됩니다. 유일한 문제는 여전히 sqlQuery가 select 문 (중국/EM을 반환해야 함) 대신 첫 번째 결과 집합 (임시 테이블에 한 행의 데이터 추가 - 비어 있음)을 반환한다는 것입니다. 업로드 된 문자열에서 마지막 결과 집합을 가져 오는 방법이 있습니까? 감사. – Tim

+0

아무 생각이든, 매우 구현 특정 것 같습니다. 나는 단지 마지막 쿼리를 별도로 보내 줄 것이라고 생각한다. 이것은 중복 된 코드처럼 보일지 모르지만 실제로는 그렇지 않습니다. 건물과 쿼리 코드를 분리하고이를 명시 적으로 만듭니다. 이 두 번째 쿼리가 추가 파일이든, 하드 코딩 된 쿼리이든, 또는 항상 마지막 줄이든, 시나리오에 맞는 것을 선택하십시오. 코드를 읽을 사람 (미래를 포함하여)은 "결과를 만드는 많은 쿼리가 무엇인지 궁금하지 않고도 원하는 결과를 보게 될 것입니다." – Nicolas78

+0

"많은 쿼리 중 ... ..."마지막 문장에 있어야합니다.) – Nicolas78

관련 문제