Saturday, February 19, 2011

Using Homebrew to Install Postgresql

[greg:local] brew install postgresql
==> Downloading ftp://ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz
######################################################################## 100.0%
. . . <<many lines logged from the install process>>
Success. You can now start the database server using:

    postgres -D /usr/local/var/pg_data
or
    pg_ctl -D /usr/local/var/pg_data -l logfile start

[greg:local] pg_ctl -D /usr/local/var/pg_data -l /tmp/logfile start
[greg:local] createdb test
[greg:local] psql test
psql (9.0.3)
Type "help" for help.

test=# CREATE TABLE authors (id INT PRIMARY KEY, name VARCHAR);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "authors_pkey" for table "authors"
CREATE TABLE
test=# CREATE TABLE books (id INT PRIMARY KEY, title VARCHAR, pages INT);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "book_pkey" for table "book"
CREATE TABLE
test=# CREATE TABLE booksauthors (book_id INT, author_id INT);
CREATE TABLE
test=# INSERT INTO authors VALUES (1, 'Craig Walls');
INSERT 0 1
test=# INSERT INTO authors VALUES (2, 'Ryan Breidenbach');
INSERT 0 1
test=# CREATE TABLE booksauthors (book_id INT REFERENCES books(id), author_id INT REFERENCES authors(id));
CREATE TABLE
test=# INSERT INTO booksauthors VALUES (1,1), (1,2);
INSERT 0 2
test=# SELECT books.title, authors.name FROM books JOIN booksauthors ON books.id = booksauthors.book_id 
JOIN authors ON authors.id = booksauthors.author_id;
      title       |       name       
------------------+------------------
 Spring in Action | Craig Walls
 Spring in Action | Ryan Breidenbach
(2 rows)

test=#
\q
[greg:rails] rails new rails_and_pg --database postgresql
[greg:rails] cd rails_and_pg
[greg:rails_and_pg] mate .
[greg:rails_and_pg] bundle install
[greg:rails_and_pg] rake db:create:all

Starting and stopping Postgresql can be accomplished with these scripts:
[greg:rails_and_pg] sudo launchctl load /Library/LaunchDaemons/org.postgresql.postgres.plist
Password:
org.postgresql.postgres: Already loaded
[greg:rails_and_pg] sudo launchctl unload /Library/LaunchDaemons/org.postgresql.postgres.plist
After installing the PROJ and GEOS frameworks, PostGIS can be installed on Postgresql. These are available from this site.

Then, to start PostGIS:
psql -d postgres -U postgres