Eu tenho um script python que raspa uma página da web a cada minuto de cada dia e salva os resultados em um banco de dados postgres.
Enquanto navego pelo banco de dados, notei que há minutos aqui e ali que estão faltando no banco de dados. Isso pode ser devido ao tempo de inatividade do meu servidor ou ao tempo de inatividade do site (mas o motivo das lacunas não é relevante para minha pergunta aqui).
Estou tentando descobrir a melhor maneira de catalogar quais minutos estão faltando no banco de dados.
No momento, tenho um script python que cria uma lista de cada minuto de cada dia e usa essa lista para percorrer a datetime
coluna da tabela do banco de dados, algo assim:
def pd(start, end, delta):
c = start
datelist = []
while c < end:
datelist.append(c)
c += delta
return datelist
Existe uma maneira de fazer isso diretamente usando SQL?
Você pode fazer algo semelhante. Primeiro gere os minutos (se você fizer isso com frequência, provavelmente gostaria de armazená-los em uma tabela indexada permanente) e, em seguida, escolha aqueles que não estão em sua tabela. A consulta ficaria assim (sem loop!):
Você pode ter que transformar seu carimbo de data/hora armazenado se a parte dos segundos for diferente de zero. E, pelo menos com grandes quantidades de dados, você precisará de um índice definido no timestamp (e possivelmente
your_table_id
, ajudaria muito se você usasse o PostgreSQL 9.2).