O comando query run suporta execução em múltiplos servidores PostgreSQL com seleção interativa, execução paralela e exportação CSV consolidada.
Servidores são gerenciados via comando settings db-servers. As configurações são armazenadas em %LocalAppData%\FurLab\furlab.jsonc.
Importante: Por segurança, as senhas não são armazenadas em texto plano no arquivo JSON. Elas são criptografadas e gerenciadas pelo ICredentialService.
# Adicionar servidor interativamente
fur settings db-servers add -i
# Adicionar servidor com flags
fur settings db-servers add dev --host localhost --port 5432 --username postgres --database mydb
# Adicionar com auto-descoberta de databases
fur settings db-servers prod --host prod-db.com --username readonly --fetch-all --exclude-patterns "template*,postgres"
# Definir/Atualizar senha (armazenamento seguro criptografado)
fur settings db-servers set-password dev
# Listar servidores
fur settings db-servers ls
# Testar conexão
fur settings db-servers test dev
# Remover servidor
fur settings db-servers rm devO arquivo furlab.jsonc suporta comentários e segue esta estrutura:
Ao executar query run, se você não fornecer uma string de conexão direta, o FurLab exibe um menu de seleção múltipla com todos os servidores cadastrados. Por padrão, todos vêm pré-selecionados.
O FurLab analisa o SQL em busca de comandos que alteram dados ou estrutura. Se detectados, um alerta vermelho é exibido com um resumo do impacto e uma solicitação de confirmação.
As queries rodam em paralelo:
- Entre Servidores: Múltiplos servidores são processados simultaneamente.
- Entre Databases: Se um servidor tem múltiplas databases, elas também podem ser processadas em paralelo (respeitando o
maxParallelismdo servidor). - Retry: Falhas de conexão transientes são tratadas automaticamente com 3 tentativas e backoff exponencial.
Diferente de ferramentas tradicionais que esperam tudo terminar, o FurLab:
- Cria uma pasta com timestamp para a execução.
- Grava arquivos CSV parciais para cada servidor assim que os dados chegam.
- Exibe uma tabela live no terminal com o status de cada database.
- Gera um arquivo
consolidated_<timestamp>.csvao final com todos os resultados de sucesso.
fur query run -i audit.sqlfur query run -c "SELECT version()" --allfur query run -i script.sql --no-confirmO arquivo consolidado possui as colunas originais da sua query acrescidas de:
Server: Nome do servidor configurado.Database: Nome da database onde a linha foi lida.
Se uma database falhar, o erro é registrado no arquivo _erros.csv daquela execução, mas o processo continua para as demais databases/servidores.
{ "servers": [ { "name": "dev", "host": "localhost", "port": 5432, "username": "postgres", "encryptedPassword": "AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA...", // Senha criptografada "databases": ["mydb"], "fetchAllDatabases": false, "excludePatterns": ["template*", "postgres"], "sslMode": "Prefer", "timeout": 30, "maxParallelism": 4 } ], "defaults": { "outputDirectory": "./results", "requireConfirmation": true, "maxParallelism": 4 } }