Whats the best and fast way to import a huge DBF file to a Postgres in Windows?
We faced a similar problem but our solution involved some coding. I don't know if that's an option for you.

We followed the usual phases:


We read the DBF metadata and created an analogous SQL 'create table' statement. The mapping is fairly straightforward except that we checked the number of digits for numeric types and coerced them to ints or longs (int8) as appropriate. Our data had a lot of foreign keys and it was better to treat them as int8 than numeric(15,0).
We read the DBF metadata again and created a (java) prepared statement that would insert a single line of data.
We "called" that prepared statement for each row in the DBF file. This makes sure we don't have problems with inadvertent SQL injection, e.g., names like O'Reilly. In reality we used batches of 400 rows (ps.addBatch() and ps.executeBatch() in java) and used an explicit begin/commit block of 20 insert statements. Both dramatically improve performance.
Finally we added any primary keys.


We could have gone through an intermediate file and used COPY but it was easier (and safer) for us to do it programmatically.

We also wrote our own DBF reader. It only took a day and we were able to work around some numeric overflow bugs that we found in third-party libraries. You can find enough information on Google that this isn't too hard.

One thing to be careful about is that "dbf" is vague. All dBase files have the same overall structure but there are tweaks from different publishers and versions. They're documented but you'll want to determine what version your file uses and then code to it.