- check the current session TZ
SELECT current_setting('TIMEZONE');
show timezone;
- show db tables
SELECT * FROM pg_catalog.pg_tables;
- show tables without system tables
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema';
- list all databases
\l
- show tables \tables and sequences \tables and views
\dt \d \dS
- use database
\c dbname
- alter column type e.g. boolean to integer
ALTER TABLE tbname ALTER colname SET DEFAULT null;
ALTER TABLE tbname ALTER colname TYPE INTEGER USING CASE WHEN colname = false THEN 0 ELSE 1 END;
ALTER TABLE tbname ALTER colname SET DEFAULT 0;
COMMIT;
- whole
pg_dump -U username -f /path/dump.sql dbname
- schema only
pg_dump -U username -s -f /path/dump.sql dbname
- single table
pg_dump -U username -d dbname -t tbname > dump.sql
- single table data only
pg_dump -U username --data-only --table=tablename sourcedb > dump.sql
- export data to csv
COPY (SELECT * FROM table1) TO '/path/to/csv/data.txt' (format CSV);
COPY (SELECT * FROM table1) TO '/path/to/csv/data.txt' WITH CSV DELIMITER ';' FORCE QUOTE *;
- restore database
\i /path/dump.sql
- single table to database
psql dbname < dump.sql
- extracting single table out of the large dump
pg_restore --data-only --table=tablename fulldump.pg > dump.pg
- import data from csv
COPY table1(col1, col2, col3) FROM '/path/to/csv/data.txt' WITH (FORMAT csv);
- import data from csv - include the header row
COPY table1 FROM '/path/to/csv/data.txt' DELIMITER ',' CSV HEADER;
- show pg_config file location
SHOW config_file
-
connect as admin
-
psql -h localhost postgres postgres
-
prevent future connections && terminate all connections to this db except your own
REVOKE CONNECT ON DATABASE thedb FROM public;
SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = current_database() AND pid <> pg_backend_pid();
GRANT CONNECT ON DATABASE thedb TO public;
- drop all active sessions
ALTER DATABASE db CONNECTION LIMIT 1;
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'db';
- import table with the same name from one database to another
CREATE TABLE db1.table1 SELECT * FROM db2.table1;
- import data from csv file. Basename of a file must be equal to tablename
mysqlimport -u user -p -c column1,column2 --fields-terminated-by=; database_name table_name.txt