Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2026

Banco de DadosPostgreSQL
Código
fc142373
Banca
FCC
Órgão
MPE SE
Ano
2026
Cargo
Ana ( )

Uma analista elaborou o Shell Script abaixo para apoiar a equipe administrativa, que precisava de uma rotina automática para monitorar informações de processos armazenados no banco de dados PostgreSQL.

 

#!/bin/bash
DATA=$(date +"%Y-%m-%d")
QTD=$(psql -U usuario -d ministpub -t -c "SELECT COUNT(*) FROM processo;")
echo "$DATA - $QTD" >> /var/log/processos_diarios.log

 

Ao ser executado em condições ideais e com as devidas permissões, esse script

 

  1. Acria automaticamente uma tabela processos_diarios dentro do banco de dados e insere nela a data e o número de processos existentes.
  2. Bconecta ao banco de dados e remove todos os registros da tabela processo, registrando o total excluído em um arquivo de log chamado processos_diarios.log.
  3. Clista todos os processos da tabela processo e exporta os resultados em formato CSV para a pasta de logs.
  4. Drealiza um backup completo do banco ministpub e anota no log o tamanho do arquivo gerado, junto com a data.
  5. Erecupera a contagem de registros da tabela processo, adiciona a data atual e grava essas informações em um arquivo de log localizado em /var/log/processos_diarios.log.
Revelar gabarito e comentário

GabaritoE — recupera a contagem de registros da tabela processo, adiciona a data atual e grava essas informações em um arquivo de log localizado em /var/log/processos_diarios.log.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Shell Script com PostgreSQL: monitoramento de processos

Gabarito: letra E. O script executa uma consulta SQL de contagem (SELECT COUNT(*)) na tabela processo do banco ministpub, armazena o resultado na variável QTD, obtém a data atual na variável DATA e, por fim, grava a linha "$DATA - $QTD" no arquivo de log /var/log/processos_diarios.log usando o redirecionador >>. Nenhuma das outras alternativas descreve corretamente essas ações.

O script apresentado é um exemplo clássico de automação de tarefas administrativas em ambientes Linux/Unix. Vamos decompor cada linha para entender exatamente o que ele faz:

  1. DATA=$(date +"%Y-%m-%d"): executa o comando date com o formato %Y-%m-%d (ano-mês-dia, ex.: 2026-05-20) e atribui o resultado à variável DATA. É uma forma de capturar a data atual do sistema.

  1. QTD=$(psql -U usuario -d ministpub -t -c "SELECT COUNT(*) FROM processo;"): aqui está o coração da questão. O comando psql é o cliente de linha de comando do PostgreSQL. Os parâmetros são:

    • -U usuario: especifica o usuário do banco de dados.

    • -d ministpub: seleciona o banco de dados ministpub.

    • -t: modo tuples only (ou tuplas apenas), que faz o psql imprimir apenas as linhas de resultado, sem cabeçalhos ou rodapés — essencial para capturar o valor limpo na variável.

    • -c "SELECT COUNT(*) FROM processo;": executa a consulta SQL que conta quantos registros existem na tabela processo.

    O resultado (um número inteiro) é armazenado na variável QTD.

  1. echo "$DATA - $QTD" >> /var/log/processos_diarios.log: o comando echo imprime a string "$DATA - $QTD" (por exemplo, 2026-05-20 - 150). O redirecionador >> adiciona (append) essa linha ao final do arquivo /var/log/processos_diarios.log. Se o arquivo não existir, ele é criado; se existir, a linha é acrescentada sem apagar o conteúdo anterior.

Portanto, o script não cria tabelas, não remove registros, não exporta CSV, não faz backup. Ele simplesmente consulta a contagem de registros e registra essa informação em um arquivo de log, junto com a data.

A pegadinha da questão está em confundir o propósito do comando psql com outras operações de banco de dados. Muitos candidatos podem associar psql a backup (pg_dump), a exportação de dados (COPY ou \copy), ou a manipulação de estrutura (CREATE TABLE, DROP TABLE). No entanto, o comando -c com SELECT COUNT(*) é uma consulta de leitura simples, e o redirecionador >> é uma operação de escrita em arquivo de texto, não no banco.

Guarde esta distinção: psql -c executa uma instrução SQL arbitrária; pg_dump faz backup; COPY exporta/importa dados. E >> sempre adiciona a um arquivo, enquanto > sobrescreve. É exatamente nesses detalhes que as alternativas se separam.

  1. 1DATA=$(date)
  2. 2QTD=$(psql SELECT COUNT(*))
  3. 3echo >> log
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que o script cria uma tabela processos_diarios no banco e insere dados nela. O script não executa nenhum comando DDL (CREATE TABLE) nem DML (INSERT). A única interação com o banco é um SELECT COUNT(*), que apenas lê dados. O arquivo /var/log/processos_diarios.log é um arquivo de texto do sistema operacional, não uma tabela do PostgreSQL.

Alternativa B — ❌ Incorreta

Diz que o script remove todos os registros da tabela processo e registra o total excluído. Não há nenhum comando DELETE ou TRUNCATE no script. A consulta SELECT COUNT(*) apenas conta registros; não altera o estado da tabela. Além disso, o log registra a contagem, não um total de registros excluídos.

Alternativa C — ❌ Incorreta

Alega que o script lista todos os processos e exporta em CSV. O comando SELECT COUNT(*) retorna um único valor (o número total de registros), não uma lista de linhas. Não há uso de COPY, \copy ou qualquer formatação CSV. O resultado é apenas um número, que é concatenado com a data e gravado no log.

Alternativa D — ❌ Incorreta

Sugere que o script realiza um backup completo do banco ministpub. Backup no PostgreSQL é feito com a ferramenta pg_dump (ou pg_basebackup), não com psql -c. O script não gera nenhum arquivo de backup; ele apenas consulta a contagem de registros e escreve uma linha de texto em um log. O tamanho do arquivo de backup também não é mencionado em nenhum lugar.

Alternativa E — ✅ Correta ⟵ GABARITO

Esta alternativa descreve com precisão o que o script faz: recupera a contagem de registros da tabela processo (via SELECT COUNT(*)), adiciona a data atual (via date) e grava essas informações no arquivo /var/log/processos_diarios.log (via echo com redirecionamento >>). Todos os elementos do script estão corretamente representados.

NÃO CAIA NESSA!

A banca explora a confusão entre psql (cliente SQL) e outras ferramentas do PostgreSQL. psql -c executa qualquer comando SQL; pg_dump faz backup; COPY exporta dados. Além disso, o redirecionador >> adiciona ao arquivo, enquanto > sobrescreveria. Fique atento a essas distinções — elas são o alvo clássico de questões sobre scripts de banco.

PEGA ESSA DICA!

Para resolver questões de Shell Script com banco de dados, identifique primeiro o que cada comando faz: psql é o cliente, pg_dump é backup, COPY é transferência de dados. Depois, analise o redirecionador (> sobrescreve, >> adiciona) e o que é gravado no arquivo. Com essa análise, você elimina as alternativas erradas rapidamente.

Gabarito: letra E

Link permanente: /questoes/fc142373