Database: Migrate day/hour statistics (PostgreSQL)

Note

This will only work if you have access to both the previous database and the one you’re using now.

  • Execute on your old system/database:

    sudo su - postgres
    
    # Dagstatistieken uit oude database:
    echo "COPY public.dsmr_stats_daystatistics (day, total_cost, electricity1, electricity2, electricity1_returned, electricity2_returned, electricity1_cost, electricity2_cost, gas, gas_cost, average_temperature, highest_temperature, lowest_temperature, fixed_cost) FROM stdin;" > day_statistics_dump.sql
    psql -d dsmrreader -c "COPY public.dsmr_stats_daystatistics (day, total_cost, electricity1, electricity2, electricity1_returned, electricity2_returned, electricity1_cost, electricity2_cost, gas, gas_cost, average_temperature, highest_temperature, lowest_temperature, fixed_cost) TO stdout" >> day_statistics_dump.sql
    
    # Uurstatistieken uit oude database:
    echo "COPY public.dsmr_stats_hourstatistics (hour_start, electricity1, electricity2, electricity1_returned, electricity2_returned, gas) FROM stdin;" > hour_statistics_dump.sql
    psql -d dsmrreader -c "COPY public.dsmr_stats_hourstatistics (hour_start, electricity1, electricity2, electricity1_returned, electricity2_returned, gas) TO stdout" >> hour_statistics_dump.sql
    
  • Transfer the files created above to your new system/database:

    /var/lib/postgres/day_statistics_dump.sql
    /var/lib/postgres/hour_statistics_dump.sql
    
  • Execute on your new system/database:

    sudo su - postgres
    
    # Dagstatistieken naar nieuwe database:
    psql -f day_statistics_dump.sql -d dsmrreader
    psql -d dsmrreader
    SELECT setval(pg_get_serial_sequence('"dsmr_stats_daystatistics"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "dsmr_stats_daystatistics";
    
    # Uurstatistieken naar nieuwe database:
    psql -f hour_statistics_dump.sql -d dsmrreader
    psql -d dsmrreader
    SELECT setval(pg_get_serial_sequence('"dsmr_stats_hourstatistics"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "dsmr_stats_hourstatistics";
    

If there is any collision with dates or hours in your new database, you will see an error.