Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alanbacelar/226a8ffe12fdfbf33ebf to your computer and use it in GitHub Desktop.
Save alanbacelar/226a8ffe12fdfbf33ebf to your computer and use it in GitHub Desktop.
PostgreSQL Snippets
VACUUM
VACUUM [tablename]
VACUUM FULL
VACUUM FULL [tablename]
REINDEX TABLE mytable
REINDEX INDEX myindex

PostgreSQL Snippets


Dump all database (SQL format)

# SQL FORMAT
pg_dump -U [user] -h localhost [db_name] > [file.sql]

# DUMP FORMAT
pg_dump -U [user] -h localhost -Fc -f [file.dump] [db_name]

Dump only a table (SQL format)

# SQL FORMAT
pg_dump --inserts -U [user] --table [table_name] [db_name] -h localhost > [output_file_name.sql]

# DUMP FORMAT
pg_dump -U [user] -h localhost -Fc -t [table_name] -f [output_file_name.sql] [db_name]

Restore a database

psql -U [user] -h localhost -f [file.sql] [db_name]

Create Super User

CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

Create user with limited access

CREATE ROLE new_role;
GRANT CONNECT ON DATABASE my_database TO new_role;
GRANT ALL PRIVILEGES ON DATABASE "my_database" to new_role;

CREATE USER new_user WITH PASSWORD '[password]';
GRANT new_role TO new_user;

ADD ALL PRIVILEGES TO USER

GRANT ALL PRIVILEGES ON DATABASE "my_database" to new_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO new_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO new_user;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO new_user;


ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO new_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO new_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO new_user;

finding long running queries

SELECT
  pid,
  now() - pg_stat_activity.query_start AS duration,
  query,
  state
FROM pg_stat_activity
WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';

terminate queries

  SELECT pg_terminate_backend(pg_stat_activity.pid)
    FROM pg_stat_activity
   WHERE pg_stat_activity.datname = 'target_db'
     AND pid <> pg_backend_pid();

uuid

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
SELECT uuid_generate_v4();

CSV

COPY persons(first_name,last_name,dob,email) 
FROM 'C:\tmp\persons.csv' DELIMITER ',' CSV HEADER;

CSV with query - CLI

\copy (SELECT * FROM persons) to '/tmp/persons_client.csv' with csv DELIMITER ';' HEADER;

Export data with select query

CREATE TABLE export_table AS SELECT colum1, colum2 FROM my table;
pg_dump --table=export_table --data-only --column-inserts -h [DB_HOST] -U [DB_USER] [DB_DATABASE]  > [file_name].sql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment