本文介绍开源数据库 PostgreSQL(版本 9.5.3 [1])在 Windows 10 环境下的安装方法。
PostgreSQL 是 1980 年以加利福尼亚大学为中心开发出来的 DBMS,与 MySQL 一样,都是世界上广泛应用的开源数据库(DB)。它严格遵守标准 SQL 规则,是初学者的最佳选择。
注意
本文使用 Windows 10 来介绍数据库的安装方法,该方法也适用于其他 Windows OS。
那么就让我们赶快按照下面的步骤来安装 PostgreSQL 吧。
大家可以从 PostgreSQL 的下载页面下载安装程序。
下载页面:http://www.enterprisedb.com/products-services-training/pgdownload#windows
本文将会介绍使用 64 位版的 Windows 安装程序(Win x86-64)在 Windows 10(64 位)系统中安装 PostgreSQL 的步骤,请大家结合自身实际下载相应的安装程序。
例如,如果大家使用的是 32 位的 Windows 操作系统,请下载“Win x86-32”版本的安装程序(图 1),安装步骤都是一样的。

图 1 下载面向 Windows 的 PostgreSQL 安装程序
运行安装程序的时候,鼠标右键点击安装文件,然后选择“以管理员身份运行”。
注意
由于安装 PostgreSQL 需要操作系统的管理员权限,因此不能直接双击安装程序运行,必须“以管理员身份运行”才可以。
这个过程中有可能会需要输入管理员密码,或者弹出运行许可的询问窗口,此时请输入密码,或点击“是”(OK)按钮。
然后点击安装画面(图 2)中的“Next >”按钮。

图 2 安装开始
接下来会显示选择安装路径的画面(图 3)。
默认的安装路径是“C:\Program Files\PostgreSQL\9.5”,但是因为有些用户的账号可能无法直接访问“Program Files”文件夹,所以我们把路径改为“C:\PostgreSQL\9.5”,然后点击“Next >”按钮。
安装过程中会自动创建文件夹,因此大家无需提前创建。

图 3 选择安装路径
接下来显示的是选择数据保存路径的画面(图 4),无需修改默认路径“C:\PostgreSQL\9.5\data”,直接点击“Next >”按钮。

图 4 选择数据保存路径
在接下来的数据库管理员密码设置画面(图 5)中输入任意密码,点击“Next >”按钮。登录 PostgreSQL 时会用到这个密码,请大家务必牢记。

图 5 设置数据库管理员密码
接下来会出现端口号设置画面(图 6),无需修改,直接点击“Next >”按钮。通常情况下保持默认选项即可。

图 6 设置端口号
接下来是 PostgreSQL 地区设置画面(图 7)。选择“Chinese(Simplified),Singapore”,点击“Next >”按钮。

图 7 设置地区
接下来是安装开始的画面(图 8)。直接点击“Next >”按钮,开始安装(图 9)。

图 8 开始安装

图 9 安装进行中
接下来会显示安装完成的画面(图 10)。取消选中的“Launch Stack Builder at exit ?”,点击“Finish”按钮。
“Launch Stack Builder”会安装各种附带工具,如果只需要使用 PostgreSQL,就没必要安装这些工具。

图 10 安装完成
这样安装就完成了。
为了提高安全性,我们需要修改一下 PostgreSQL 的设置文件。请使用记事本或其他文本编辑工具打开下面这个文件。
C:\PostgreSQL\9.5\data\postgresql.conf
使用“listen_addresses”作为关键词来查询文件内容。安装完成之后,该关键词会被设置成 listen_addresses = '*'。
虽然这意味着允许所有远程主机进行连接,但是这次的学习环境只需要通过本地机器进行连接就可以了,因此我们在这一行的最前面添加一个 #,注释掉该行。
#listen_addresses = '*'
添加如下一行新的内容,然后覆盖保存文件(图 11)。
listen_addresses = 'localhost'

图 11 添加“listen_addresses = ’localhost’”
这样就设置成只允许本地机器进行连接了。
必须重新启动 PostgreSQL,该设置才能生效。点击“控制面板”→“管理工具”→“服务”。
如果在控制面板中没有找到“管理工具”,那么请点击控制面板右上角的“查看方式”,选择“大图标”或者“小图标”,切换到图标显示模式。
在显示出来的窗口中找到“postgresql-x64-9.5”,用鼠标右键进行点击(图 12),然后在弹出的菜单中选择“启动”或者“重新启动”。

图 12 在“服务”窗口中重新启动 PostgreSQL
注意
如果 PostgreSQL 是已经启动的状态,那么“启动”选项就是灰色的,无法选择。
反之,如果 PostgreSQL 是停止状态,那么“重新启动”选项就是灰色的,无法选择。
这样,之前我们对 PostgreSQL 所做的“listen_addresses”的修改就生效了。
注意
如果错误地停止了“postgresql-x64-9.5”之外的其他服务,可能会造成操作系统无法正常工作,所以请一定不要停止其他服务。
此外,如果使用的是 32 位的安装程序,那么显示出来的服务名就是“postgresql-9.5”。
PostgreSQL 提供了一个可以通过命令行来执行 SQL 语句的工具“psql”。
psql 会把 SQL 语句发送给 PostgreSQL,然后再将接收到的执行结果显示出来。
下面就来介绍一下使用 psql 执行 SQL 语句的方法。
下面将要执行的 SQL 语句的语法和意义将会在接下来的第 数据库和 SQL 是什么关系、SQL 如何对表进行创建、更新和删除操作 和 SQL SELECT WHERE 语句如何指定一个或多个查询条件 介绍,因此大家不必太过在意。
现在已经完成了安装,接下来就让我们启动 psql,连接 PostgreSQL 吧。
首先,启动命令提示符窗口。使用鼠标右键点击电脑桌面左下角的“Windows”图标,在弹出的菜单中选择“命令提示符(管理员)(A)”(图 13)。

图 13 启动命令提示符窗口
备忘
如果使用的是 Window8/8.1,可以按照如下步骤启动命令提示符窗口。
在电脑的开始画面,同时点击键盘上的“Windows”键和“X”键。
在画面左下角显示的菜单一览中点击“命令提示符(管理员)”。
如果使用的是 Window7,可以按照如下步骤启动命令提示符窗口。
在电脑的开始画面,点击键盘上的“Windows”键,在“搜索程序和文件”输入框中输入“cmd”。
右键点击检索结果中的“cmd.exe”,选择“以管理员身份运行(A)”。
打开命令提示符窗口(图 14)之后,输入如下命令,然后按下回车键(Enter)。

图 14 命令提示符窗口
C:\PostgreSQL\9.5\bin\psql.exe –U postgres
接下来会显示出“用户 postgres 的口令 :”,要求输入密码。输入安装时设置的密码,按下回车键,然后就会在命令提示符窗口显示出 postgres=#,意味着连接成功了(图 15)。

图 15 通过 psql 连接 PostgreSQL
下面就可以执行 SQL 语句了。
注意
出于安全考虑,输入的密码不会在画面上显示出来。
输入密码时,光标会一直在同一位置闪烁,看上去就像什么也没输入一样,但其实密码已经正常输入了,所以请在输入结束时按下回车键。
连接数据库之后,就可以执行 SQL 语句了。下面就让我们试着来执行一个简单的 SQL 语句吧。
输入 SQL 语句
如图 16 所示,通过 psql 连接到示例数据库(postgres)之后,输入如下一行命令。


图 16 输入“SELECT 1;”
按下回车键
输入结束之后,按下回车键,这样就可以执行这条 SQL 语句了。如果显示出如下信息,就表示执行成功了(图 17)。
?column?
----------
1

图 17 “SELECT 1;”的执行结果
注意
“
;”是 SQL 的结束符,如果没有输入的话,即使按下回车键,SQL 语句也不会执行。因此,在执行 SQL 语句的时候,请大家注意不要忘记输入“
;”。
上面我们介绍了手动输入 SQL 语句的例子,其实直接复制本文的示例代码,粘贴在命令提示符窗口,也同样可以执行 SQL 语句。
这里我们来创建一个学习用的数据库。数据库的创建步骤如下所示。
执行创建数据库的 SQL 语句
在命令提示符窗口,保持 PostgreSQL 连接的状态下,输入如下一行 SQL 语句,按下回车键。请注意,数据库的名称只能使用小写字母。
CREATE DATABASE shop;
创建成功后,画面中会显示如下信息(图 18)。
CREATE DATABASE

图 18 数据库创建成功
结束 psql
数据库创建成功之后,结束 psql。为了结束 psql,需要输入“\q”,然后按下回车键。
这样就切断了与 postgreSQL 的连接,返回到命令提示符窗口(图 19)。“\q”中的 q 是“quit”(退出)的缩写。

图 19 从 PostgreSQL 登出
注意
现在通过 psql 连接(登录)的是安装 PostgreSQL 时自动创建的示例数据库 postgres。
为了连接刚刚创建的数据库,我们需要暂时结束(退出)psql。
由于 psql 在窗口关闭时也会结束,因此也可以通过点击 psql 窗口右上角的“X”按钮结束 psql。
下面就让我们登录刚刚创建的数据库“shop”吧。在命令提示符窗口执行如下命令。
C:\PostgreSQL\9.5\bin\psql.exe –U postgres –d shop
选项“-d shop”是指定“数据库 shop”的意思。
此时会要求输入 postgres 的密码,输入之后按下回车键。登录成功后会显示如下信息(图 20)。
shop=#

图 20 示例数据库 shop 登录成功
这样数据库 shop 就登录成功了。
原文链接:https://www.developerastrid.com/sql/windows-install-postgresql/
(完)
因 PostgreSQL 版本在不断更新,读者在学习时下载最新版本即可。 ↩︎
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以