将文件从 PostgreSQL 导入到 R

Posted

技术标签:

【中文标题】将文件从 PostgreSQL 导入到 R【英文标题】:Importing files from PostgreSQL to R 【发布时间】:2012-09-19 08:17:51 【问题描述】:

我有一个大型数据集,我将在 R 软件中进行一些分析。 虽然我无法将数据正确导入 R。

我收到此错误:

postgresqlNewConnection(drv, ...) 中的错误:RS-DBI 驱动程序:(无法连接数据库名称“Intel”上的 User@local

我使用 PostgreSQL 打开数据并以某种方式对其进行管理。如何将PostgreSQL中已有的数据导入R软件?

【问题讨论】:

用 PL/R 语言不可能吗? joeconway.com/plr 如果您解释了尝试导入它时会发生什么,将会有所帮助。如果可能,显示特定的错误消息。我已将您在评论中显示的一条错误消息复制到问题中。 老实说,我以前没有听过 PL/R。正如我提到的,我有大量数据应该在 R 中分析,但 R 无法处理。我使用 Navicat 和 Pg-admin 准备数据。为了将准备好的数据导入 R,我想使用“RPostgreSQL 包”,根据描述,我使用了“drv 【参考方案1】:
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='localhost', port='5432', dbname='Swiss',
                 user='postgres', password='123456')

此外,应该安装 R 中的“RPostgreSQL”包。

【讨论】:

【参考方案2】:

试试 R 包 RPostgreSQL http://cran.r-project.org/web/packages/RPostgreSQL/ 。 您可以在 http://code.google.com/p/rpostgresql/ 中查看如何使用它。 示例:

library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")   ## loads the PostgreSQL driver
con <- dbConnect(drv, dbname="R_Project")   ## Open a connection 
rs <- dbSendQuery(con, "select * from R_Users")   ## Submits a statement
fetch(rs,n=-1)   ## fetch all elements from the result set
dbGetQuery(con, "select * from R_packages")   ## Submit and execute the query
dbDisconnect(con)   ## Closes the connection
dbUnloadDriver(drv)   # Frees all the resources on the driver

【讨论】:

实际上,我以前见过,但我遇到了这个错误“postgresqlNewConnection(drv, ...) 中的错误:RS-DBI 驱动程序:(无法连接数据库名称“Intel”上的 User@local " 我之前没用过PostgreSQL。我不知道它有什么问题。【参考方案3】:

在远程连接之前,您必须在 PostgreSQL 服务器上配置两件事。这是如何在 Linux 下进行配置的说明:

1。查找并配置 postgresql.conf 以允许 TCP 服务接受来自任何主机的连接,而不仅仅是本地主机

find / -name "postgresql.conf"

在我的 linux 操作系统中,该文件位于 /etc/postgresql/9.6/main/ 中,因此我在那里对其进行了修改。添加行 "listen_addresses = '*'" 如下:

/etc/postgresql/9.6/main/postgresql.conf

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
# insert the following line
listen_addresses = '*'

2。查找并配置 pg_hba.conf 以允许从任何主机连接客户端

sudo find / -name "pg_hba.conf"

在我的 linux 操作系统中,该文件位于 /etc/postgresql/9.6/main/ 中,因此我在那里对其进行了修改。添加行“host all all 0.0.0.0/0”如下:

sudo nano /etc/postgresql/9.6/main/pg_hba.conf

# Put your actual configuration here
# ----------------------------------
#
# If you want to allow non-local connections, you need to add more
# "host" records.  In that case you will also need to make PostgreSQL
# listen on a non-local interface via the listen_addresses
# configuration parameter, or via the -i or -h command line switches.
#
# insert the following line
host all all 0.0.0.0/0 trust

3。停止和启动服务器

sudo service postgresql 停止

sudo service postgresql 启动

4。与您的客户连接,现在它应该可以工作了。

祝你好运!

【讨论】:

以上是关于将文件从 PostgreSQL 导入到 R的主要内容,如果未能解决你的问题,请参考以下文章

将压缩的 CSV 文件导入 PostgreSQL

将 Mysql CSV 导入 PostgreSQL

从命令行导入 PostgreSQL CSV

将数据从 Excel 导入 PostgreSQL

PostgreSQL如何导入数据

如何将数据从PostgreSQL导入Hadoop?