| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/bin/bash
- DB_HOST="localhost"
- DB_PORT="5432"
- DB_USER="report_db"
- DB_NAME="report_db"
- DB_PASSWORD="123456" # ATENÇÃO: Em produção, considere usar .pgpass ou outra forma segura para a senha
- API_URL="https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=365&interval=daily"
- echo "Buscando dados diários do Bitcoin dos últimos 365 dias..."
- RESPONSE=$(curl -s "$API_URL")
- if [ -z "$RESPONSE" ]; then
- echo "Não foi possível obter resposta da API. Verifique sua conexão ou a URL."
- exit 1
- fi
- # Itera sobre cada item de preço
- echo "$RESPONSE" | jq -c '.prices[]' | while read -r item; do
- timestamp=$(echo "$item" | jq -r '.[0]')
- price=$(echo "$item" | jq -r '.[1]')
- # Converte o timestamp para data (YYYY-MM-DD). Use -u para GMT/UTC.
- date=$(date -u -d "@$((timestamp/1000))" '+%Y-%m-%d')
- echo "Inserindo valor BTC de $price em $date..."
- # Comando psql para inserir dados
- # O "ON CONFLICT (btc_value_date) DO NOTHING" é crucial aqui para não falhar em datas duplicadas.
- PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" <<EOF
- INSERT INTO btc_value (btc_value_value, btc_value_date)
- VALUES ('$price', '$date')
- ON CONFLICT (btc_value_date) DO NOTHING;
- EOF
- # Verifica o código de saída do psql para cada inserção
- if [ $? -ne 0 ]; then
- echo "AVISO: Erro ao inserir valor para a data $date. Pode ser duplicidade."
- fi
- done
- echo "Concluído! Verifique a tabela 'btc_value' no banco de dados para confirmar a inserção."
|