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