如何将application_name发送到RPostgreSQL连接

时间:2015-02-04 15:29:59

标签: r rpostgresql

我知道PostgreSQL数据库允许跟踪每个连接的应用程序名称,看起来application_name变量应该与RPostgreSQL一起使用,但我该怎么做呢?添加变量application_name =" test" dbConnect无法正常工作。

2 个答案:

答案 0 :(得分:2)

我不确定你是否可以将application_name='test'作为参数传递给RPostgreSQL中的dbConnect(有一个可选的options参数,但我无法弄清楚它期望什么样的数据。)

另一种方法是在打开连接后立即运行以下SQL查询:

SET application_name='test'

它应该可以工作,直到你关闭连接。

答案 1 :(得分:0)

它没有很好的文档记录,但类似的东西有效:

drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, 
           dbname  = "<my_db>",
           host = "<my_host>", 
           [...], 
           options = "-c application_name=my_app_name"
       )

它也可以与dbPool(包“ pool”)一起使用:

pool <- dbPool(
            drv = dbDriver("PostgreSQL"),
            dbname = "<my_db>",
            host = "<my_host>",
            [...]
            minSize = 0,
            maxSize = 3,
            options = "-c application_name=my_app_name"
        )

使用pg_stat_activity

进行检查
mydb=> SELECT state, usename, application_name FROM pg_stat_activity WHERE datname = 'mydb';
 state  | usename  | application_name
--------+----------+------------------
 active | postgres | psql
 idle   | myuser    | my_app_name