Microsoft SQL Server -> Postgres Data Migration
There's no need for a commercial product. You could make use of for example Pentaho Data Integration to do the task.

Back to the main question, here are the steps you could do to feed your data without recreating the tables every time:


Create a capture data change mechanism (it works as a table), to log changes on tables (which table has been inserted with which record (id) etc)
Update your destination data with changes logged in CDC mechanism.


This kind of process is broadly implemented in Data Warehousing to migrate changes.

If this seems a bit like an overkill for you, then a slower solution might come in handy. That'd be comparing the snapshot in your destination with current data in source and based on differences take proper actions (insert, update, delete rows from destination). This method would require you to scan whole tables each time you need to synchronize.