我尝试在Mac上安装了PostgreSQL9.6.3

环境

    • OS:macOS Sierra 10.12.3

 

    • Homebrew:1.2.0 Homebrew/homebrew-core (git revision 5045; last commit 2017-05-11)

 

    PostgreSQL:9.6.3

安装

安装PostgreSQL

只要使用Homebrew,就能够一次性安装完毕。
在将Homebrew更新至最新版本后,再安装PostgreSQL。

$ brew update
$ brew install postgresql
==> Downloading https://homebrew.bintray.com/bottles/postgresql-9.6.3.sierra.bot
######################################################################## 100.0%
==> Pouring postgresql-9.6.3.sierra.bottle.tar.gz
==> Using the sandbox
==> /usr/local/Cellar/postgresql/9.6.3/bin/initdb /usr/local/var/postgres
==> Caveats
If builds of PostgreSQL 9 are failing and you have version 8.x installed,
you may need to remove the previous version first. See:
  https://github.com/Homebrew/legacy-homebrew/issues/2510

To migrate existing data from a previous major version (pre-9.0) of PostgreSQL, see:
  https://www.postgresql.org/docs/9.6/static/upgrading.html

To migrate existing data from a previous minor version (9.0-9.5) of PostgreSQL, see:
  https://www.postgresql.org/docs/9.6/static/pgupgrade.html

  You will need your previous PostgreSQL installation from brew to perform `pg_upgrade`.
  Do not run `brew cleanup postgresql` until you have performed the migration.

To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start
==> Summary
? /usr/local/Cellar/postgresql/9.6.3: 3,259 files, 36.6MB

看起来出现了错误,但我在谷歌翻译上确认后发现只是一个警告。
输出中提到了关于已经安装了PostgreSQL的注意事项以及启动PostgreSQL的方法。

确认版本

我会检查一下安装是否成功以及版本。

$ psql --version
psql (PostgreSQL) 9.6.3

因为显示的是9.6.3,所以安装成功了。

最初化

使用-E选项,将字符编码设置为UTF-8来初始化数据库。
在初始化过程中,将创建一个名为数据库集群的DB集合体。

$ initdb /usr/local/var/postgres/ -E utf8
The files belonging to this database system will be owned by user "{ユーザー名}".
This user must also own the server process.

The database cluster will be initialized with locale "ja_JP.UTF-8".
initdb: could not find suitable text search configuration for locale "ja_JP.UTF-8"
The default text search configuration will be set to "simple".

Data page checksums are disabled.

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".

这一边也看起来有错误,但应该没有问题。

如何操作

服务的启动

按照安装时的指示,使用brew services start postgresql命令来启动。

$ brew services start postgresql
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 10 (delta 0), reused 5 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
Tapped 0 formulae (37 files, 51KB)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

因为在我的环境中,我确认了两次钥匙扣,“允许”选项都选择了。

获取DB列表

使用psql命令获取数据库列表。

$ psql -l
                                        List of databases
   Name    |    Owner     | Encoding |   Collate   |    Ctype    |       Access privileges       
-----------+--------------+----------+-------------+-------------+-------------------------------
 postgres  |  {user name} | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 |  {user name} | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/{user name}              +
           |              |          |             |             | {user name}=CTc/{user name}
 template1 |  {user name} | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/{user name}              +
           |              |          |             |             | {user name}=CTc/{user name}
(3 rows)

在初始化后的数据库集群中有三个数据库。

创建DB

使用createdb命令创建新的数据库。在这里,我们将创建一个名为“test”的数据库。

$ createdb test

连接到DB

通过psql命令连接到{DB名}数据库。连接后可以执行SQL语句。

$ psql test
psql (9.6.3)
Type "help" for help.

test=#

在这里我们没有省略,但是当用户名和数据库名相同时,可以省略数据库名。

创建表格

在创建语句中使用 CREATE TABLE 来创建表。在这里,我们将创建一个名为「test_table」的表。

test=# create table test_table (
test(# id integer not null,
test(# name varchar(20),
test(# primary key(id)
test(# )
test(# ;
CREATE TABLE

基本指令

在PostgreSQL中,有很多方便的以\开头的命令可供使用。

コマンド説明\lDB一覧取得\dテーブル一覧取得\d {テーブル名}対象テーブルのフィールド一覧取得\i {SQLファイルパス}SQLファイル実行\qDB切断

获取DB清单

由于与psql -l命令类似,因此省略说明。

获取表格列表

使用“\d”来获取表的列表。

test=# \d
             List of relations
 Schema |    Name    | Type  |    Owner     
--------+------------+-------+--------------
 public | test_table | table |  {user name}
(1 row)

获取字段列表

使用\d {テーブル名}来获取目标表的字段列表。

test=# \d test_table
         Table "public.test_table"
 Column |         Type          | Modifiers 
--------+-----------------------+-----------
 id     | integer               | not null
 name   | character varying(20) | 
Indexes:
    "test_table_pkey" PRIMARY KEY, btree (id)

执行SQL文件

使用预先准备的文件路径 {SQL文件路径},批量执行其中所写的SQL。

insert into test_table (id, name) values (1, 'hoge');
insert into test_table (id, name) values (2, 'huga');
test=# \i ~/Desktop/test.sql
INSERT 0 1
INSERT 0 1
test=# select * from test_table;
 id | name
----+------
  1 | hoge
  2 | huga
(2 rows)

断开DB

断开数据库连接。

test=# \q

停止服务

使用brew services stop postgresql 命令停止数据库。
使用brew services list 命令获取服务的启动状态。

Status説明started起動中stopped停止中
$ brew services list
Name       Status  User         Plist
postgresql started {user name}  /Users/{user name}/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

$ brew services stop postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)

$ brew services list
Name       Status  User Plist
postgresql stopped

请参考以下链接

    • MacにPostgreSQLをインストール – Qiita

 

    • OS X に PostgreSQL を Homebrew でインストールして brew services で起動する – Qiita

 

    • PostgreSQL 基本コマンド一覧

 

    第18回 データベースクラスタ|オススメ!OSS-DB情報|OSS-DB道場|受験対策|DBスペシャリストを認定する資格 OSS-DB技術者認定試験
广告
将在 10 秒后关闭
bannerAds