Jak zaimportować moduły lub zainstalować rozszerzenia w PostgreSQL 9.1+?

Odpowiedzi:

104

Postgrseql 9.1 zawiera nowe polecenie CREATE EXTENSION. Powinieneś go użyć do zainstalowania modułów.

Moduły zawarte w 9.1 można znaleźć tutaj. . Obejmują,

adminpack , auth_delay , auto_explain , btree_gin , btree_gist
, chkpass , citext , cube , dblink , dict_int
, dict_xsyn , dummy_seclabel , earthdistance , file_fdw , fuzzystrmatch
, hstore , intagg , intarray , isn , lo
, ltree , oid2name , pageinspect , passwordcheck , pg_archivecleanup
, pgbench , pg_buffercache , pgcrypto , pg_freespacemap , pgrowlocks
, pg_standby , pg_stat_statements , pgstattuple , pg_test_fsync , pg_trgm
, pg_upgrade , seg , sepgsql , spi , sslinfo , tablefunc
, test_parser , tsearch2 , unaccent , uuid-ossp , vacuumlo
, xml2

Jeśli na przykład chcesz zainstalować earthdistance, po prostu użyj tego polecenia:

CREATE EXTENSION earthdistance;

Jeśli chcesz zainstalować rozszerzenie z łącznikiem w nazwie, na przykład uuid-ossp, musisz umieścić nazwę rozszerzenia w podwójnych cudzysłowach:

CREATE EXTENSION "uuid-ossp";
Evan Carroll
źródło
3
Dla wygody, aby usunąć rozszerzenie: DROP EXTENSION extension_name [, ...]
Gulasz
58

Chociaż odpowiedź Evana Carrola jest poprawna, pamiętaj, że musisz zainstalować pakiet postgresql contrib, aby polecenie CREATE EXTENSION działało.

W Ubuntu 12.04 wyglądałoby to tak:

sudo apt-get install postgresql-contrib

Zrestartuj serwer postgresql:

sudo /etc/init.d/postgresql restart

Wszystkie dostępne rozszerzenia znajdują się w:

/usr/share/postgresql/9.1/extension/

Teraz możesz uruchomić polecenie UTWÓRZ ROZSZERZENIE.

tani-rokk
źródło
Próbowałem zainstalować citext, ale Google nie znalazł tej strony, a ta odpowiedź nie pojawiła się. Teraz citext jest wymieniony na tej stronie trzy razy :-) Chodź do Google, zrób to indeksowanie.
boatcoder
12

Oprócz rozszerzeń, które są obsługiwane i dostarczane przez główny zespół programistów PostgreSQL, istnieją rozszerzenia dostępne od stron trzecich. Warto zauważyć, że istnieje witryna przeznaczona do tego celu: http://www.pgxn.org/

kgrittn
źródło
8

W przypadku pliku postgrersql10

Rozwiązałem to za pomocą

yum install postgresql10-contrib

Nie zapomnij aktywować rozszerzeń w postgresql.conf

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all

potem oczywiście uruchom ponownie

systemctl restart postgresql-10.service 

wszystkie potrzebne rozszerzenia, które można znaleźć tutaj

/usr/pgsql-10/share/extension/
matson kepson
źródło
4

Rozszerzenia dostępne dla każdej wersji Postgresql są różne. Jak już wspomniano, prostym sposobem sprawdzenia, które rozszerzenia są dostępne, jest:

SELECT * FROM pg_available_extensions;

Jeśli rozszerzenie, którego szukasz, jest dostępne, możesz je zainstalować za pomocą:

CREATE EXTENSION 'extensionName';

lub jeśli chcesz go upuścić użyj:

DROP EXTENSION 'extensionName';

Dzięki psqlmożesz dodatkowo sprawdzić, czy rozszerzenie zostało pomyślnie zainstalowane za pomocą \dx, i znaleźć więcej szczegółów na temat rozszerzenia za pomocą \dx+ extensioName. Zwraca dodatkowe informacje o rozszerzeniu, takie jak używane z nim pakiety.

Jeśli rozszerzenie nie jest dostępne w Twojej wersji Postgres, musisz pobrać niezbędne pliki binarne i biblioteki i zlokalizować je pod adresem /usr/share/conrib

Marios Simou
źródło
0

W terminalu psql umieść:

\i <path to contrib files>

w ubuntu zwykle tak jest /usr/share/postgreslq/<your pg version>/contrib/<contrib file>.sql

André Herculano
źródło
6
To dotyczy wersji przed 9.1. Nie używaj tej metody w wersji 9.1+.
Evan Carroll,
0

Jak pobrać i zainstalować, jeśli masz SUSE. Jako przykład pobieram moduł tablefunc, więc mogę użyć tabeli krzyżowej. Mam PostgreSQL 9.6.1.

kliknij prawym przyciskiem pulpit, terminal, wpisz:

sudo zypper in postgreql-contrib

Wprowadź dane logowania, kontynuuj wpisując:

y

Uruchom zapytanie (moje uruchomiłem z pgAdminIII):

CREATE EXTENSION tablefunc;

Powinieneś teraz mieć tę crosstabfunkcję.

Nie musiałem restartować.

alpinista11
źródło