Run doltgres. This will create a postgres user (with a password of password) and a postgres database in ~/doltgres/databases (add the --data-dir argument or change the DOLTGRES_DATA_DIR environment variable to use a different directory).
$ doltgres
Successfully initialized dolt data repository.
Starting server with Config HP="localhost:5432"|T="28800000"|R="false"|L="info"|S="/tmp/mysql.sock"
Make sure you have Postgres version 15 or higher installed. I used Homebrew to install Postgres on my Mac. This requires I manually add /opt/homebrew/opt/postgresql@15/bin to my path. On Postgres version 14 or lower, \ commands (i.e. \d, \l) do not yet work with Doltgres.
Open a new terminal. Connect with the following command: psql -h localhost -U postgres and enter the password password when prompted. This will connect to the postgres database with the postgres user.
$ psql -h 127.0.0.1 -U postgres
Password for user postgres:
psql (15.4 (Homebrew), server 15.0)
Type "help" for help.
postgres=>
Create a getting_started database. Create the getting_started example tables.
postgres=> create database getting_started;
--
(0 rows)
postgres=> \c getting_started;
psql (15.4 (Homebrew), server 15.0)
You are now connected to database "getting_started" as user "postgres".
getting_started=> create table employees (
id int8,
last_name text,
first_name text,
primary key(id));
--
(0 rows)
getting_started=> create table teams (
id int8,
team_name text,
primary key(id));
--
(0 rows)
getting_started=> create table employees_teams(
team_id int8,
employee_id int8,
primary key(team_id, employee_id),
foreign key (team_id) references teams(id),
foreign key (employee_id) references employees(id));
--
(0 rows)
getting_started=> \d
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | employees | table | postgres
public | employees_teams | table | postgres
public | teams | table | postgres
(3 rows)
Make a Dolt Commit.
getting_started=> select * from dolt_status;
table_name | staged | status
------------------------+--------+-----------
public.employees | 0 | new table
public.employees_teams | 0 | new table
public.teams | 0 | new table
(3 rows)
getting_started=> select dolt_add('teams', 'employees', 'employees_teams');
status
--------
0
(1 row)
getting_started=> select * from dolt_status;
table_name | staged | status
------------------------+--------+-----------
public.employees | 1 | new table
public.employees_teams | 1 | new table
public.teams | 1 | new table
(3 rows)
getting_started=> select dolt_commit('-m', 'Created initial schema');
hash
----------------------------------
peqq98e2dl5gscvfvic71e7j6ne34533
(1 row)