sql >> データベース >  >> RDS >> PostgreSQL

R関数内でSQL関数を呼び出す

    秘訣はshQuoteを使用することです およびsprintf しかし、それを行うための賢い方法があると確信しています。

    library(sqldf)
    library(RPostgreSQL)
    
    options(sqldf.RPostgreSQL.user = "****",
            sqldf.RPostgreSQL.dbname = "****",
            sqldf.RPostgreSQL.host = "localhost",
            sqldf.RPostgreSQL.port = 5432)
    
    myfunc <- function(name)
        sqldf(sprintf("select * from retrieve_data(%s)", shQuote(name)))
    
    myfunc('Bill')
    ##   id name year_born nationality
    ## 1 A1 Bill      2001    American
    ## 2 A2 Bill      1991    American
    ## 3 A3 Bill      1995    American
    

    文字列の引用を避けたい場合は、

    を使用できます。
    drv <- dbDriver("PostgreSQL")
    con <- dbConnect(drv, dbname = "tempdb")
    myfunc2 <- function(name)
        dbGetQuery(con, "select * from retrieve_data($1)", name)
    
    myfunc2("Bill")
    ##   id name year_born nationality
    ## 1 A1 Bill      2001    American
    ## 2 A2 Bill      1991    American
    ## 3 A3 Bill      1995    American
    



    1. mysqli_connect():(HY000 / 2002):ソケットを介してローカルMySQLサーバーに接続できません

    2. java.lang.ArrayIndexOutOfBoundsException:jdbc接続の場合

    3. bashからmysqlクエリをフィードする方法

    4. PHP:PGSQLドライバーとAutoCommit?