Echo what Mark said about having enough IQ Temp Store configured, that will effect this solutions.
The traditional approach is to isolate the duplicates, so if you can load the 147 Gig table into an IQ table and then issue
select col1, col2, col3, col4, count(*) as TOTAL_ROWS, max(rowid(my_table)) as ROW_ID
into #rows_to_remote
from by_table
group by col1, col2, col3
having count(*) > 1
;
delete my_table from my_table, #rows_to_remote where rowid(my_table) = ROW_ID;
commit;
Now the first select statement needs enough IQ Temp to complete the group by to isolate the duplicates. Delete should remove the duplicate rows from the IQ table.
John