¿Cómo importo módulos o instalo extensiones en PostgreSQL 9.1+?

Respuestas:

104

Postgrseql 9.1 proporciona un nuevo comando CREATE EXTENSION. Debería usarlo para instalar módulos.

Los módulos proporcionados en 9.1 se pueden encontrar aquí. . El incluir,

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

Si, por ejemplo, desea instalar earthdistance, simplemente use este comando:

CREATE EXTENSION earthdistance;

Si desea instalar una extensión con un guión en su nombre, como uuid-ossp, debe encerrar el nombre de la extensión entre comillas dobles:

CREATE EXTENSION "uuid-ossp";
Evan Carroll
fuente
3
Para mayor comodidad, para eliminar una extensión: DROP EXTENSION extension_name [, ...]
Guiso
58

Si bien la respuesta de Evan Carrol es correcta, tenga en cuenta que debe instalar el paquete contrib de postgresql para que funcione el comando CREATE EXTENSION.

En Ubuntu 12.04 sería así:

sudo apt-get install postgresql-contrib

Reinicie el servidor postgresql:

sudo /etc/init.d/postgresql restart

Todas las extensiones disponibles están en:

/usr/share/postgresql/9.1/extension/

Ahora puede ejecutar el comando CREATE EXTENSION.

tani-rokk
fuente
Estaba intentando instalar citext, pero Google no encontraba esta página y esta respuesta no apareció. Ahora, el citext se menciona tres veces en esta página :-) Vamos, Google, haz esa cosa de indexación.
Boatcoder
12

Además de las extensiones que son mantenidas y proporcionadas por el equipo de desarrollo central de PostgreSQL, hay extensiones disponibles de terceros. Cabe destacar que existe un sitio dedicado a ese propósito: http://www.pgxn.org/

kgrittn
fuente
8

Para postgrersql10

Lo he resuelto con

yum install postgresql10-contrib

No olvide activar extensiones en postgresql.conf

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all

luego, por supuesto, reiniciar

systemctl restart postgresql-10.service 

todas las extensiones necesarias que puedes encontrar aquí

/usr/pgsql-10/share/extension/
matson kepson
fuente
4

Las extensiones disponibles para cada versión de Postgresql varían. Una forma sencilla de comprobar qué extensiones están disponibles es, como ya se ha mencionado:

SELECT * FROM pg_available_extensions;

Si la extensión que está buscando está disponible, puede instalarla usando:

CREATE EXTENSION 'extensionName';

o si quieres dejarlo usa:

DROP EXTENSION 'extensionName';

Con psqltambién puede comprobar si la extensión se ha instalado correctamente utilizando \dxy encontrar más detalles sobre la extensión utilizando \dx+ extensioName. Devuelve información adicional sobre la extensión, como qué paquetes se utilizan con ella.

Si la extensión no está disponible en su versión de Postgres, entonces necesita descargar las bibliotecas y archivos binarios necesarios y ubicarlos en /usr/share/conrib

Marios Simou
fuente
0

En la terminal psql ponga:

\i <path to contrib files>

en ubuntu suele ser /usr/share/postgreslq/<your pg version>/contrib/<contrib file>.sql

André Herculano
fuente
6
Eso es para pre 9.1. No utilice este método en 9.1+.
Evan Carroll
0

Cómo descargar e instalar si tiene SUSE. Como ejemplo, estoy descargando el módulo tablefunc para poder usar la tabla de referencias cruzadas. Tengo PostgreSQL 9.6.1.

haga clic derecho en el escritorio, terminal, escriba:

sudo zypper in postgreql-contrib

Ingrese las credenciales, continúe escribiendo:

y

Ejecutar consulta (ejecuté la mía desde pgAdminIII):

CREATE EXTENSION tablefunc;

Ahora debería tener la crosstabfunción.

No tuve que reiniciar.

mountainclimber11
fuente