Crie vários arquivos de uma vez com o psql

27

Desejo executar vários scripts sql sequencialmente com psqluma única transação para configurar meu esquema de banco de dados. Qual é a melhor maneira de fazer isso? No passado, eu sabia que tinha um script mestre no qual eu corria, psqlincluindo os outros arquivos, no entanto, não me lembro da sintaxe desse script.

xenoterracida
fonte

Respostas:

32

Seu script pode ficar assim:

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

Ou você pode fazer algo assim:

cat file1.sql file2.sql | psql -1 -f -
Peter Eisentraut
fonte
11
Compreender os tubos no shell me ajudou a obter o último comando.
Ma11hew28 #
Seu exemplo com BEGIN; COMMIT; não funciona, você precisa de semi-colunas no final de cada \ilinha:
nichochar 14/02
0

Eu fiz isso usando find no unix / linux com o caminho para o arquivo sql passado com o parâmetro rep_sql com a instrução "read":

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

Ele diz: encontre os seguintes arquivos de links, independentemente do nome, com ext como «.sql» e execute no diretório do arquivo psql que trabalha com mabase e execute o arquivo encontrado.

Deun
fonte