Neste vídeo, mergulhamos no mundo do Supabase e mostramos como você pode extrair seus dados e convertê-los em comandos SQL prontos para uso. Perfeito para backups, migrações ou análise de dados!
👨💻 O que você vai aprender:
Como fazer um dump completo dos dados do seu projeto Supabase Técnicas para lidar com erros e tabelas inexistentes Como converter os dados JSON do Supabase em comandos SQL inseríveis 🛠️ Ferramentas utilizadas:
Python 3.11 
Biblioteca Supabase para Python VSCode (mas você pode usar qualquer editor de sua preferência!)
Código: script-dump-public.py
import os
import json
from supabase import create_client, Client
# Configuração do Supabase
url: str = "https://ID-SUPABASE-SERVER.supabase.co"
key: str =SEU_key"
supabase: Client = create_client(url, key)
def dump_table(table_name):
    try:
        response = supabase.table(table_name).select("*").execute()
        return response.data
    except Exception as e:
        print(f"Erro ao fazer dump da tabela {table_name}: {str(e)}")
        return None
def main():
    tables = ["autores", "categorias", "faq", "noticias", "users" , "coletadados"]
    dump_data = {}
    for table in tables:
        print(f"Fazendo dump da tabela: {table}")
        table_data = dump_table(table)
        if table_data is not None:
            dump_data[table] = table_data
        else:
            print(f"Tabela {table} ignorada devido a erro.")
    # Salva os dados em um arquivo JSON
    with open('supabase_dump.json', 'w') as f:
        json.dump(dump_data, f, indent=2)
    print("Dump completo. Dados salvos em 'supabase_dump.json'")
if __name__ == "__main__":
    main()🔍 Destaque especial: Apresentamos um script Python robusto que não só extrai seus dados, mas também lida graciosamente com erros comuns, como tabelas inexistentes. Além disso, mostramos como converter o dump JSON em comandos SQL, tornando a migração de dados uma tarefa simples!
Código: multi-table-json-to-supabase-sql.py
import json
import os
def escape_sql_string(value):
    return str(value).replace("'", "''")
def json_to_sql(data):
    sql_commands = []
    for table_name, records in data.items():
        # Verifica se os registros são uma lista
        if not isinstance(records, list):
            records = [records]
        for record in records:
            columns = ', '.join(record.keys())
            values = ', '.join(f"'{escape_sql_string(value)}'" for value in record.values())
            sql = f"INSERT INTO {table_name} ({columns}) VALUES ({values});"
            sql_commands.append(sql)
    return sql_commands
def create_table_commands(data):
    create_commands = []
    for table_name, records in data.items():
        if not records:
            continue
        
        # Usa o primeiro registro para determinar a estrutura da tabela
        first_record = records[0] if isinstance(records, list) else records
        columns = ', '.join(f"{key} TEXT" for key in first_record.keys())
        create_command = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns});"
        create_commands.append(create_command)
    return create_commands
def main():
    # Obtém o diretório do script atual
    script_dir = os.path.dirname(os.path.abspath(__file__))
    json_file = os.path.join(script_dir, 'supabase_dump.json')
    try:
        # Lê o arquivo JSON
        with open(json_file, 'r') as file:
            data = json.load(file)
        # Gera comandos CREATE TABLE
        create_commands = create_table_commands(data)
        
        # Gera comandos INSERT
        insert_commands = json_to_sql(data)
        # Cria um arquivo SQL para salvar os comandos
        sql_file = os.path.join(script_dir, 'supabase_import.sql')
        with open(sql_file, 'w') as file:
            file.write("-- Comandos CREATE TABLE:\n")
            for command in create_commands:
                file.write(command + "\n")
            
            file.write("\n-- Comandos INSERT:\n")
            for command in insert_commands:
                file.write(command + "\n")
        print(f"Comandos SQL gerados e salvos em {sql_file}")
    except FileNotFoundError:
        print(f"Erro: O arquivo {json_file} não foi encontrado.")
    except json.JSONDecodeError:
        print(f"Erro: O arquivo {json_file} não é um JSON válido.")
    except Exception as e:
        print(f"Ocorreu um erro: {str(e)}")
if __name__ == "__main__":
    main()💡 Dica profissional: Aprenda como personalizar o script para suas necessidades específicas e como automatizar o processo para backups regulares.
🔗 Links úteis:
Documentação oficial do Supabase: https://supabase.io/docs
✓ Crie sua conta no FlutterFlow https://app.flutterflow.io/create-account?referral_id=oJ98Y3lFADZxvKSzZx1IdvxbBKk1
👍 Gostou do vídeo? Não se esqueça de deixar seu like, se inscrever no canal e ativar as notificações para não perder nenhum conteúdo sobre desenvolvimento e banco de dados! #Supabase #Python #SQL #flutterflow #api #codingtutorial

 