我正在使用该RPostgreSQL包从 PostgreSQL 数据库加载数据。
问题是日期时间列 (POSIXct) 会自动转换为日期。
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname="abc",host="def ",port=1234,user="ghi",password="jkl" )
Run Code Online (Sandbox Code Playgroud)
而不是使用这个:
df = dbGetQuery(con, "
SELECT customer_id, dttm_utc
FROM schema.table;")
Run Code Online (Sandbox Code Playgroud)
我必须使用它:
df = dbGetQuery(con, "
SELECT customer_id, to_char(dttm_utc, 'MM-DD-YYYY HH24:MI:SS') as dttm_utc,
FROM schema.table;")
Run Code Online (Sandbox Code Playgroud)
如果我不这样做,我就会失去时间,只能恢复日期。
我注意到如果我只想要前 1000 行,则不会发生此问题。当行数超过 300 000 时,它几乎一直出现。
我怎样才能解决这个问题 ?
我正在使用该包通过 R 访问我的 PostgreSQL 数据库 (9.3) RPostgreSQL。我有一些非常长且大的 SQL 查询(从 raster2pgsql 生成的几个 MB 大)。
如何在 R 中将 sql 查询文件作为语句发送/执行?
正常方式
\i query.sql
Run Code Online (Sandbox Code Playgroud)
似乎无法通过dbSendQuery. 我尝试通过 读取整个 sql 文件作为字符向量readLines,但这也失败了,因为 dbSendQuery 显然只支持单个命令?
我有一个用R plumber构建的API ,它使用RPostgreSQL和pool连接到PostgreSQL数据库(尽管如果我使用的是Shiny应用程序,这也适用):
# create the connection pool
pool <- dbPool(
drv = PostgreSQL(),
host = Sys.getenv("DB_HOST"),
port = 5432,
dbname = "db",
user = Sys.getenv("DB_USER"),
password = Sys.getenv("DB_PASSWORD")
)
# start the API
pr <- plumb("plumber.R")
# on stop, close the pool
pr$registerHooks(
list("exit" = function() { poolClose(pool) })
)
Run Code Online (Sandbox Code Playgroud)
我想每天导入新数据。最简单的方法是创建一个新数据库并将其推广到生产环境:
CREATE DATABASE db_new;
-- create the tables
-- bulk-insert the data
SELECT pg_terminate_backend (pid) FROM pg_stat_activity WHERE datname = 'db';
DROP DATABASE db; …Run Code Online (Sandbox Code Playgroud) 下面是我在 R 中用于从 PostgreSQL 数据库中提取 ID 的代码片段。当我运行该函数时,我从 R 收到以下警告消息:
在 result_create(conn@ptr, statements) 中:关闭打开的结果集,取消之前的查询
options(warn=-1)如何避免出现此警告消息而不在代码开头 使用,抑制警告而不是
con <- dbConnect(RPostgres::Postgres(),
user = "postgres",
dbname = "DataBaseName",
password = "123456",
port = 5431)
get_id <- function(connection, table){
query <- toString(paste("SELECT id FROM ", table, sep = ""))
data_extract_query <- dbSendQuery(connection, query)
data_extract <- dbFetch(data_extract_query)
return(data_extract)
}
get_id(con, "users")
Run Code Online (Sandbox Code Playgroud) 我正在尝试安装R-Package RPostgreSQL,但是收到以下错误,
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/RPostgreSQL/libs/RPostgreSQL.so':
/usr/lib64/R/library/RPostgreSQL/libs/RPostgreSQL.so: undefined symbol: PQpass
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/lib64/R/library/RPostgreSQL’
我libpq和postgresql-dev安装.所有库文件都在目录中
/usr/lib64/pgsql/ 并且所有头文件都在目录中
/usr/include/pgsql/
Postgre版本 - 9.3.4
R版本 - 3.0.2
操作系统 -CentOS-6.4
我错过了一些小事,但无法找出为什么会发生这种情况.
我究竟做错了什么?怎么纠正这个?
谢谢 :)
我正在分析来自Redshift数据库的数据,使用每个dplyr的连接在R中工作 - 这有效:
my_db<-src_postgres(host='my-cluster-blahblah.redshift.amazonaws.com', port='5439', dbname='dev',user='me', password='mypw')
mytable <- tbl(my_db, "mytable")
viewstation<-mytable %>%
filter(stationname=="something")
Run Code Online (Sandbox Code Playgroud)
当我尝试将该输出转换为数据框时,所以:
thisdata<-data.frame(viewstation)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息,警告消息:
Only first 100,000 results retrieved. Use n = -1 to retrieve all.
Run Code Online (Sandbox Code Playgroud)
我应该在哪里设置n?
我有一个闪亮的应用程序,使用连接到数据库RPostgreSQL.在应用程序结束时,连接已关闭,驱动程序应卸载但我收到错误,警告我连接未关闭.
代码看起来像这样:
# in the app.R file, but not in the server function:
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "database1",
host = "localhost", port = 5432,
user = "user", password = "pw")
# in the server function:
foo <- dbGetQuery(con, "SELECT * from table1")
# at the end of the server function to disconnect when the app is closed:
session$onSessionEnded(function(){
dbDisconnect(con)
dbUnloadDriver(drv)
})
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误消息:Error in postgresqlCloseDriver(drv, ...): RS-DBI driver: (There are opened connections -- close …
我想将一个完整的数据框导出到一个已经在数据库(postgresql)中创建并包含类似数据的表中.
我发现几个问题解释有关dbwrite表(.... overwrite = TRUE),我不想覆盖我表中已经存在的数据.我只想用r console中的数据框更新我的表.
谁能让我知道我怎么能这样做..
这样的事情
dbInsertTable(con, df, tablename = "MyTable")
Run Code Online (Sandbox Code Playgroud) 我正在通过dplyrR 中的包连接和查询 PostgreSQL 数据库。我知道我可以使用dbListTables(con). 但是,我的表被组织成不同的模式。使用 R 查看数据库中存在的所有模式的最简单方法是什么?
我正在考虑使用 package.json 将数据库中的数据直接导入到 r 中RPostgresQL。到目前为止,我曾经在Postico(PostgreSQL 客户端)软件中编写查询并导出为 csv,然后将 csv 文件导入 R。
这是我到目前为止所写的内容,不知道下一步如何进行。
library('RPostgreSQL')
pg=dbDriver("PostgreSQL")
con = dbConnect(pg, user="msahil515", password="",
host="localhost", port=5432, dbname="msahil515")
Run Code Online (Sandbox Code Playgroud)
在此之后如何将数据库中的表加载到 R 中,或者如何在 R 中编写查询以仅从数据库中提取必要的数据?
r ×10
rpostgresql ×10
postgresql ×6
dplyr ×2
centos ×1
dbi ×1
plumber ×1
postico ×1
r-dbi ×1
sql ×1