在Windows上部署PostgreSQL以及使用R语言连接操作

来源:互联网 发布:好用又不贵的面霜知乎 编辑:程序博客网 时间:2024/06/02 11:23

在Windows上部署PostgreSQL

之前的开发工作,都是在Linux上完成的,而且昨晚以后鉴于没有保留文档,搞得我后来也不知道怎么重新部署数据库了,现在必须要在Windows开发出一个可以使用的数据库了。我的想法是,暂时还是按照老的办法来:

  1. 建立一个PostgreSQL数据库。
  2. 设置好用户名密码什么的。
  3. 使用R语言往数据库里写入比较大的文件成为表格。

安装数据库没什么好说的,就是下载了最新的PostgreSQL无脑安装,我安装的是9.6版本,安装过程中,有一个需要设置密码的环节,指定的用户名是postgres,密码自己设定一下。这个用户是管理员用户,很重要,基本上一开始系统安装以后,你只有这个用户可以操作,我们需用它慢慢添加其他用户,然后建立数据库等等:

安装完毕以后,应该有两种以上办法设定建立数据库等等吧,pgAdmin是一种,直接使用命令行也是一种。

命令行操作数据库

我用管理员权限打开了cmder(就是一个windows CMD的升级版),目前我们的数据库里只有一个用户,就是管理员用户postgres,输入命令:

psql -U postgres

然后可以看到登录:

用户 postgres 的口令:psql (9.6.2)输入 "help" 来获取帮助信息.postgres=#

(我也不知道为什么出来这么多中文提示……有同学知道怎么把它们全部修改成英文的话麻烦告诉我。)

出现最后那一个postgres=#就意味着可以操作数据库了。目前数据库里应该只有一个系统管理员:postgres,我们就是用它登录了。使用\l命令可以查看目前存在的数据库,我也搞不懂为什么刚刚建立的数据库,就已经有三个数据库了。我本以为是空的。
这里写图片描述

另外,使用\du命令可以查看所有的用户
这里写图片描述

这个结果还比较正常,只有一个用户,postgreSQL超级用户。下面我们要做的,就是建立一个数据库,并且建立一个用户,以后我们的网站啊或者其他东西,都通过这个用户名,去访问这个数据库实现。并且,还需要将数据都放在数据库里。

如果使用pgAdmin来做查看结果的话,应该是这样子的:
这里写图片描述
上述的两个红框,一个是postgres数据库,一个是postgres用户,正是我们刚才用命令行看到的东西。

我们继续使用命令行建立建立新用户:joshua,以及一个数据库:mydb。需要使用三行命令就够了:

CREATE USER joshua WITH PASSWORD '12345678';

第一行:上述命令创建了一个叫做joshua的数据库使用人员,它的属性是”user”,而不是“role”,意味着它是可以登录的人,不只是可以调用数据的人。

CREATE DATABASE mydb OWNER joshua;

第二行:创建一个叫做mydb的数据库,并且让数据库拥有人设置为joshua.

GRANT ALL PRIVILEGES ON DATABASE mydb to joshua;

第三行:将myDB的所有权限赋予joshua. (我也不知道有哪些权限……) 运行效果如下:

postgres=# CREATE USER joshua WITH PASSWORD '12345678';CREATE ROLEpostgres=# CREATE DATABASE myDB OWNER joshua;CREATE DATABASEpostgres=# GRANT ALL PRIVILEGES ON DATABASE mydb to joshua;GRANTpostgres=#

在PostgreSQL中,我们也可以看到一样的结果:
这里写图片描述

OK,到这一步,我们就可以使用joshua这个用户,随意地登录mydb这个数据库了,需要的仅仅是在网站程序中进行一些配置就好。

使用R语言连接数据库进行操作

我个人R语言比较好,所以比较希望能通过R语言连接数据库进行操作,以前我用R语言连接过mySQL进行数据读取。同样,我们可以使用R语言连接postgreSQL进行操作:

首先当然是需要在Windows是安装R语言,我安装的是Microsoft open-R,微软宣称自己的R比常规的要好,我目前还没用出来,但是安装上去以后,和普通的R看上去没什么区别,如果想用RStudio一类的IDE也可以安装,能用就行。然后打开R,安装一个包叫做:RPostgreSQL

连接方式超级简单,载入R包以后,一行就连上了:

library(RPostgreSQL)con <- dbConnect(PostgreSQL(), host="localhost", user= "joshua", password="12345678", dbname="mydb") 

那个包提供了对于数据库的各种操作,增删改查都有。不过我一般都是处理好的数据直接一行命令上传数据库的,所以不太关注其他命令。下面假设我有一批数据,我要把它推送到数据库中,建立成一张表格,需要做的仅仅也是一行命令:

dbWriteTable(con, "MyData", MyData)

其中,后一个MyData是你的一个R对象,DataFrame或者Matrix都行吧。前一个就是一个名字而已,这个名字是你的MyData这一个数据库在数据库内的表的名字。

下面我用R语言中非常常用的鸢尾花数据做一下演示:

> data("iris")> head(iris)  Sepal.Length Sepal.Width Petal.Length Petal.Width Species1          5.1         3.5          1.4         0.2  setosa2          4.9         3.0          1.4         0.2  setosa3          4.7         3.2          1.3         0.2  setosa4          4.6         3.1          1.5         0.2  setosa5          5.0         3.6          1.4         0.2  setosa6          5.4         3.9          1.7         0.4  setosa> dbWriteTable(con, "iris", iris)[1] TRUE

通过dbWriteTable函数,整个iris数据就被上传到了postgreSQL中了,并且在其中自动建立了一个叫做iris的表格。我们可以使用命令行查一下:

在bash中,先按之前的命令,登录到postgres用户中,然后用它登录postgreSQL数据库,然后使用命令\c my db连接mydb数据库:

postgres=# \c mydb;您现在已经连接到数据库 "mydb",用户 "postgres".mydb=#

出现mydb=#就意味着已经成功连接上了mydb数据库,然后使用命令\d查看所有的表:

mydb=# \d             关联列表 架构模式 | 名称 |  类型  | 拥有者----------+------+--------+-------- public   | iris | 数据表 | joshua(1 行记录)

可以看出,出现了一个叫做iris的表。我们可以使用最常用的SQL查询语句看一下表里的内容:

mydb=# select * from iris limit 6; row.names | Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species-----------+--------------+-------------+--------------+-------------+--------- 1         |          5.1 |         3.5 |          1.4 |         0.2 | setosa 2         |          4.9 |           3 |          1.4 |         0.2 | setosa 3         |          4.7 |         3.2 |          1.3 |         0.2 | setosa 4         |          4.6 |         3.1 |          1.5 |         0.2 | setosa 5         |            5 |         3.6 |          1.4 |         0.2 | setosa 6         |          5.4 |         3.9 |          1.7 |         0.4 | setosa(6 行记录)

可以看出,结果和之前是一样的。

同样,刷新一下pgAdmin也可以看出一样的结果:
这里写图片描述

OK,到目前为止,我们就已经能够成功在Windows上建立postgreSQL了,并且能够通过R语言方便地与其进行连接操作。

0 0
原创粉丝点击