chamar vários arquivos SQL em um único arquivo SQL no Postgres

11

Como chamar vários arquivos sql em um único arquivo sql, no postgres

Por exemplo, tenho aaa.sql, bbb.sql, ccc.sql.

Eu quero executar esses 3 arquivos do xxx.sql.

Alguém pode me sugerir como fazer isso.

Viagem
fonte

Respostas:

12

Se você estiver executando esses arquivos, psqldeseja a \idiretiva ("execute comandos do arquivo").

xxx.sql:

\i aaa.sql
\i bbb.sql
\i ccc.sql

Se você estiver passando esses arquivos por outro programa, precisará combinar os arquivos por conta própria - não acredito que exista uma maneira padrão de SQL de executar arquivos externos.

voretaq7
fonte
Obrigado pela resposta. Vou testar e confirmar se eu era capaz de alcançá-lo ou não
Trip
Ainda não parece funcionar Não tenho certeza se estou faltando alguma coisa. preciso de ponto e vírgula no final ??? -Na verdade não !!!
Viagem
1
Você precisa ser mais específico do que "não está funcionando" - Asseguro-lhe isso faz o trabalho - Consulte o manual psql
voretaq7
Funcionou. Finalmente :-) Thanku O problema foi - ele não conseguiu reconhecer o arquivo e O especificou o caminho relativo para o arquivo e seu funcionamento. Obrigado mais uma vez.
Trip
@ Trip Trip, não se esqueça de dar crédito ao voretaq por sua resposta!
Richard T
4

Não é exatamente o que você está pedindo, mas servirá ao seu propósito: 1) Coloque todos os seus arquivos de script em uma pasta; e 2) use um script bash para percorrer seus arquivos e executar o psql. Por exemplo:

SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name

for file in $SCRIPTS_DIR/*.sql
    do sudo -u postgres psql $DATABASE_NAME -f $file
done

Na verdade, isso é um pouco melhor, porque você não precisará digitar os nomes dos seus arquivos.

mehmet
fonte
3

Em um shell bash, você pode fazê-lo também com um simples find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;
Panciz
fonte
Requer que você use em "*.sql"vez de*.sql
Jeel Shah