Postgresql İpuçları

  • Tabloların sadece kayıtlarını dump alma: pg_dump –column-inserts –data-only –inserts -t table1 -f dump.sql -U user db_name
  • Bazı tabloların dump’ını alma: pg_dump -t table1 -t table2 -f dump.sql -U user db_name –inserts
  • sql sorgu sonucunu dışarı aktarma (superuser gerektirmez): \copy (select * from maillog) To ‘/tmp/mail-logs.dump.csv’ With CSV header
  • sql sorgu sonucunu dışarı aktarma (superuser gerektirebilir): copy (select * from table1) to ‘/tmp/test.csv’ with csv;
  • Login iken client character encoding’i öğrenme: show client_encoding
  • Login iken sunucu character encoding’i öğrenme: show server_encoding
  • Character encoding’i öğrenme: psql database user –list
  • ILIKE ile case-insenstive arama yapma: select * from table1 where city ILIKE ‘istanbul’
  • Konsoldan import: psql -f dump.sql
  • psql prompt’dan import: \i dump.sql
  • Tüm tabloları listeleme: \d
  • Bir tablonun yapısını görme: \d+ table1
  • Sorgu sonuçlarını dikey formatlı görme: select * from users\x\g\x
  • Sorgu ile bir tablonun varlığını kontrol etme: select * from pg_class where relname=’tablename’

Postgresql’den Benzer Tabloları Topluca Silme

psql -d mydb -P tuples_only=1 -c '\dt' | cut -d '|' -f 2 | paste -sd "," | sed 's/ //g' | xargs -I{} echo psql -d mydb -c "drop table {};"

Kaynak: http://stackoverflow.com/questions/4202135/how-to-drop-multiple-tables-in-postgresql-using-a-wildcard#answer-26480962

Tablonun Constraint’lerini Öğrenme

SELECT *
FROM information_schema.table_constraints tc
right JOIN information_schema.constraint_column_usage ccu
ON tc.constraint_catalog = ccu.constraint_catalog
AND tc.constraint_schema = ccu.constraint_schema
AND tc.constraint_name = ccu.constraint_name
and ccu.table_name in ('table_name')
WHERE lower(tc.constraint_type) in ('foreign key');

 

Örnek-1: Table Oluşturma

CREATE TABLE accountsdisabled(
	id serial NOT NULL PRIMARY KEY,
	accountname CHARACTER VARYING(100) DEFAULT ''::CHARACTER VARYING NOT NULL,
	organization CHARACTER VARYING(100) DEFAULT ''::CHARACTER VARYING NOT NULL,
	generalorganization CHARACTER VARYING(100) DEFAULT ''::CHARACTER VARYING NOT NULL,
--- smailint col.
	status SMALLINT DEFAULT (0)::SMALLINT NOT NULL,
--- timestamp col. without zone and miliseconds
	crtdate TIMESTAMP WITHOUT TIME zone DEFAULT now()::timestamp(0)
);