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.

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.


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.


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 {} \;

Requer que você use em "*.sql"vez de*.sql
Jeel Shah
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.