Fuente varios archivos a la vez con psql

27

Quiero ejecutar varios scripts sql secuencialmente psqlcomo una sola transacción para configurar mi esquema de base de datos. ¿Cuál es la mejor manera de hacer esto? En el pasado sé que tenía un script maestro con el que me encontré psqlque incluía los otros archivos, sin embargo, no recuerdo la sintaxis de este script.

xenoterracida
fuente

Respuestas:

32

Su guión podría verse así:

BEGIN;
\i file1.sql
\i file2.sql
COMMIT;

O podrías hacer algo como esto:

cat file1.sql file2.sql | psql -1 -f -
Peter Eisentraut
fuente
1
Comprender las tuberías en el shell me ayudó a obtener el último comando.
ma11hew28
Tu ejemplo con BEGIN; COMETER; no funciona, necesita semicolumnas al final de cada \ilínea:
nichochar
0

Lo hice usando find en unix / linux con la ruta al archivo sql past con el parámetro rep_sql con la instrucción "read":

find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +

Dice: encuentre los archivos de enlaces no siguientes, sea cual sea el nombre con ext como «.sql» y ejecútelos en el directorio del archivo psql trabajando con mabase y ejecute el archivo encontrado.

From a
fuente