hrcerq
(usa Outra)
Enviado em 29/05/2018 - 14:55h
TheMagicOz escreveu:
Poderia me ajudar como faço isso então , um comando com o formato .sql ou psql e rodar dentro do terminal psql, qualquer script como exemplo, esotu perdido :/
Certamente. Mas vamos por etapas. Primeiro, você já tem o script SQL que deseja executar? A primeira etapa é criar este script. Se já o tiver, a segunda etapa é criar um shell script que vai acionar o psql para executar o script SQL criado.
Esse shell script pode ser criado (no meu exemplo aqui com o nome meuScript.sh), com o seguinte conteúdo:
#!/bin/bash
PGPASSWORD=minhaSenha
psql -U meuUsuario meuBanco -f /caminho/para/meusComandos.sql
Observe que eu coloquei no exemplo o caminho absoluto para o script SQL (meusComandos.sql). É uma maneira de evitar que o script falhe se eu por acaso mudar o script shell de diretório. Mas isso fica a seu critério, se preferir pode colocar o caminho relativo também, caso julgue mais provável que mude os dois arquivos de lugar.
Outro detalhe é que no exemplo coloquei a senha do usuário em uma variável dentro do próprio script. Mas existem outras opções, você pode deixar o usuário que vai executar esses comandos configurado no arquivo pg_hba.conf para não precisar autenticar. Existem meios seguros de fazer isso, como por exemplo, só permitir que ele não informe senha se estiver fazendo conexão local.
Atenção: certifique-se de que o usuário que informar tenha acesso ao banco especificado. Muitos usuários perdem horas achando que o problema está no script criado quando na verdade está na configuração do arquivo pg_hba.conf.
Para tornar o script shell executável:
chmod +x meuScript.sh
Depois, para executá-lo:
./meuScript.sh
Ou então:
sh meuScript.sh
Por fim, se precisar que esse comando seja executado periodicamente, pode usar o serviço cron (vide comando crontab) para agendar a execução. Mas lembre-se que nesse caso é ainda mais importante atentar para o caminho do script SQL. Você pode passar o caminho absoluto, ou, se preferir, armazenar esse caminho em uma variável de ambiente.
---
Atenciosamente,
Hugo Cerqueira