PauloRB.dev

Desenvolvedor de Software

Código python para rodar arquivos .sql no postgres | PauloRB.dev Código python para rodar arquivos .sql no postgres – PauloRB.dev
Código python para rodar arquivos .sql no postgres

Código python para rodar arquivos .sql no postgres

Nesta semana o Postgres vem me desafiando, e meu pc também, porque por algum motivo o PGADMIN está demorando uma eternidade para rodar o procedimento de restore de backups.

Numa dessas situações do dia-a-dia com o restore do PGADMIN não querendo funcionar o jeito foi rodar um arquivo .sql e que pasme por ter um tamanho maio a ferramenta de sql do PGADMIN não abria o bendito então o jeito foi usar nosso bom e velho python.

Segue o Script:

#pip install psycopg2 - você deve instalar esta biblioteca

import psycopg2

# Função para executar o script SQL
def executar_script_sql(arquivo_sql, conexao):
    try:
        # Abrir o arquivo .sql
        with open(arquivo_sql, 'r') as f:
            script_sql = f.read()

        # Criar um cursor e executar o script SQL
        with conexao.cursor() as cursor:
            cursor.execute(script_sql)
            conexao.commit()
            print("Script executado com sucesso!")

    except Exception as e:
        print(f"Ocorreu um erro: {e}")
        conexao.rollback()
    finally:
        conexao.close()

# Conectar ao banco de dados PostgreSQL
def conectar_postgres():
    try:
        conexao = psycopg2.connect(
            host="localhost",  # Substitua pelo host correto
            database="dev_sge_quatro",  # Substitua pelo nome correto do banco de dados
            user="postgres",  # Substitua pelo usuário correto
            password="postgres"  # Substitua pela senha correta
        )
        return conexao

    except Exception as e:
        print(f"Erro ao conectar ao banco de dados: {e}")
        return None

if __name__ == "__main__":
    conexao = conectar_postgres()
    if conexao:
        executar_script_sql('dotbsc.sql', conexao)

Outra forma interessante de realizar a leitura de arquivos .sql é através do script abaixo que faz a execução dos scripts diretamente no psql do postgres:

import subprocess

def executar_script_com_psql(arquivo_sql):
    try:
        # Chama o comando psql e executa o arquivo SQL
        comando = [
            'psql', 
            '-h', 'localhost',  # Substitua pelo host correto
            '-d', 'dev_sge',  # Substitua pelo banco de dados correto
            '-U', 'postgres',  # Substitua pelo usuário correto
            '-p', '5432',  # Porta correta
            '-f', arquivo_sql  # Arquivo SQL a ser executado
        ]
        # Executa o comando e solicita a senha do usuário
        subprocess.run(comando, check=True)
        print("Script executado com sucesso!")

    except subprocess.CalledProcessError as e:
        print(f"Ocorreu um erro ao executar o script: {e}")

if __name__ == "__main__":
    executar_script_com_psql('pilar_lancar_acoes_part1.sql')

Mais Posts

Como iniciar, parar e reiniciar o Apache Web Server no Linux

Como iniciar, parar e reiniciar o Apache Web Server no Linux

Comandos  para controlar o funcionamento do apache em ambientes de desenvolvimento locais: Estes Comandos Servem para ambientes Ubuntu/Debian: Leia mais

Controlando um Semáforo e Servo Motor com Arduino: Um Projeto Prático para Iniciantes

Controlando um Semáforo e Servo Motor com Arduino: Um Projeto Prático para Iniciantes

A robótica e a eletrônica são áreas fascinantes que combinam criatividade e lógica para construir soluções incríveis. Hoje, vamos explorar... Leia mais

Script para automatizar instalações de ferramentas em ambiente LINUX

Script para automatizar instalações de ferramentas em ambiente LINUX

Para agilizar as instalações das minhas ferramentas de desenvolvimento quando for necessário resolvi montar o seguinte script: Basta colocar o... Leia mais

Como Usar Between Entre Duas Colunas de Data no Laravel

Como Usar Between Entre Duas Colunas de Data no Laravel

Trabalhar com intervalos de datas é uma necessidade comum em aplicações web, especialmente em sistemas que lidam com eventos, agendamentos... Leia mais