What is the best method for inserting a couple million rows into an existing table that has the fastest load time?
a direct mode insert is probably the quickest, but it has implications - in particular, your table is locked whilst the insert takes place.
But on an unindexed table, you can expect this to be very quick
SQL> create table T ( x int, y date, z varchar2(100));
Table created.
SQL>
SQL> set timing on
SQL>
SQL> insert /*+ APPEND */ into T
2 select rownum, sysdate, 'some string'
3 from dual
4 connect by level <= 2000000;
2000000 rows created.
Elapsed: 00:00:04.79
If the table cannot be locked...then the answer depends on what facilities you have available, eg
1) if the table is partitioned, you could load a separate table and 'exchange' the partition in
2) you could create a second copy of the table with the new data as well, use triggers to capture the deltas on the true table, and then swap the names over with a small outage
But even with standard mode insert, 2 million rows isnt a huge deal - although in all cases, the number of indexes you have on the table is a critical factor.
Hope this helps.