una son separar script qué para ndf montar los ldf error dividir datos archivos archivo adjuntar sql postgresql postgresql-9.1 hstore

sql - son - ¿Cómo crear una nueva base de datos con la extensión hstore ya instalada?



separar y adjuntar una base de datos en sql server (1)

Recientemente tuve problemas tratando de usar hstore con Django. Instalé hstore de esta manera:

$ sudo -u postgres psql postgres=# CREATE EXTENSION hstore; WARNING: => is deprecated as an operator name DETAIL: This name may be disallowed altogether in future versions of PostgreSQL. CREATE EXTENSION postgres=# /dx List of installed extensions Name | Version | Schema | Description ---------+---------+------------+-------------------------------------------------- hstore | 1.0 | public | data type for storing sets of (key, value) pairs plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows)

E ingenuamente pensé que mis nuevas bases de datos incluirían hstore. Ese no es el caso:

$ createdb dbtest $ psql -d dbtest -c ''/dx'' List of installed extensions Name | Version | Schema | Description ---------+---------+------------+------------------------------ plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (1 row)

¿Hay alguna manera de tener automáticamente hstore en una base de datos recién creada?


Larga historia corta:

Instale hstore en la base de datos template1:

psql -d template1 -c ''create extension hstore;''

Explicación paso a paso:

Según lo declarado por la documentación de PostgreSQL :

CREATE EXTENSION carga una nueva extensión en la base de datos actual.

La instalación de una extensión es específica de la base de datos. A continuación, le devuelve el nombre de la base de datos actual:

$ psql -c ''select current_database()'' current_database ------------------ username (1 row)

En caso de que tenga una base de datos nombrada después de su nombre de usuario. Ahora con dbtest :

$ psql -d dbtest -c ''select current_database()'' current_database ------------------ dbtest (1 row)

Ok, lo tienes. Ahora, para crear nuevas bases de datos con hstore instalado, tendrá que instalarlo en la base de datos template1 . De acuerdo con el documento :

CREATE DATABASE realmente funciona al copiar una base de datos existente. Por defecto, copia la base de datos del sistema estándar llamada template1.

Hagámoslo:

$ psql -d template1 -c ''create extension hstore;''

Y comprueba que funcione:

$ createdb dbtest $ psql -d dbtest -c ''/dx'' List of installed extensions Name | Version | Schema | Description ---------+---------+------------+-------------------------------------------------- hstore | 1.0 | public | data type for storing sets of (key, value) pairs plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows)

¡Hecho!