복붙노트

[SQL] RODBC SQL 쿼리에 R 변수를 전달? [복제]

SQL

RODBC SQL 쿼리에 R 변수를 전달? [복제]

RODBC 패키지 내에서 SQLQuery 인 기능에 R 내에서 정의 된 변수를 전달하는 방법은 없나요?

특히, 나는 스칼라 / 테이블 반환 함수, 저장 프로 시저 중 하나에 이러한 변수를 전달해야 및 / 또는 SELECT 문 아마도 WHERE 절.

예를 들어 보자 :

x <- 1 ## user-defined

그때,

example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")

또는...

example2 <- sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = x")

또는...

example3 <- sqlQuery(myDB,"EXEC dbo.my_stored_proc (x)")

물론,이 작품의 아무도, 그러나 나는 기능이 이런 종류의 수 있습니다 뭔가가 있다고 생각하지 않습니다 있어요.

해결법

  1. ==============================

    1.당신이 전달하고자하는 문자열을 구축 할 수 있습니다. 그래서 대신

    당신이 전달하고자하는 문자열을 구축 할 수 있습니다. 그래서 대신

    example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")
    

    하다

    example <- sqlQuery(myDB, paste("SELECT * FROM dbo.my_table_fn (", 
                                    x, ")", sep=""))
    

    이는 x의 값을 기입한다.

  2. ==============================

    2.당신의 sprintf를 사용하는 경우, 당신은 매우 쉽게 변수 대체를 사용하여 쿼리 문자열을 구축 할 수 있습니다. 당신은 쿼리 문자열 (나는 stringr를 사용하고) 있다는-구문 분석을 사전에 경우 별도의 사용 편의성을 위해, 당신은 당신의 코드를 통해 여러 줄을 쓸 수 있습니다.

    당신의 sprintf를 사용하는 경우, 당신은 매우 쉽게 변수 대체를 사용하여 쿼리 문자열을 구축 할 수 있습니다. 당신은 쿼리 문자열 (나는 stringr를 사용하고) 있다는-구문 분석을 사전에 경우 별도의 사용 편의성을 위해, 당신은 당신의 코드를 통해 여러 줄을 쓸 수 있습니다.

    EG

    q1 <- sprintf("
                   SELECT basketid, count(%s)
                   FROM %s
                   GROUP BY basketid
                  "
                  ,item_barcode
                  ,dbo.sales
                  )
    q1 <- str_replace_all(str_replace_all(q1,"\n",""),"\\s+"," ")
    df <- sqlQuery(shopping_database, q1)
    

    최근에 나는 더 간단 당신이 문자열 내에서 재사용 및 재 배열 변수 수 있습니다 파이썬의 인 String.format () 함수 같은 것을 사용하여 변수를 교체하고 싶었 발견

    EG

    $: w = "He{0}{0}{1} W{1}r{0}d".format("l","o")
    $: print(w)
    "Hello World"
    

    그러나, 나는 트위터에 주위에 물어 있도록이 기능은 R에 존재하는 표시되지 않으며, 매우 도움이 녀석의 @kevin_ushey는 R.에서 사용을 확인하는 자신의 사용자 정의 기능을 대답!

  3. ==============================

    3.이상의 변수와 함께이 작업을 수행 :

    이상의 변수와 함께이 작업을 수행 :

      aaa <- "
          SELECT   ColOne, ColTwo 
    
    FROM    TheTable 
    
     WHERE  HpId =  AAAA            and
    
      VariableId = BBBB     and 
    
      convert (date,date )  < 'CCCC'
      "
    
    
    --------------------------
    
      aaa <- gsub ("AAAA",  toString(111),aaa)
    
      aaa <- gsub ("BBBB",  toString(2222),aaa)
    
      aaa <- gsub ("CCCC",  toString (2016-01-01) ,aaa)
    
  4. ==============================

    4.이것으로 시도

    이것으로 시도

    x <- 1
    example2 <- fn$sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = '$x'")
    
  5. from https://stackoverflow.com/questions/4330072/pass-r-variable-to-rodbcs-sqlquery by cc-by-sa and MIT license