What is the best way to stage data in SSIS?
I think it is better to pass values as a Table Valued Parameter (TVP).

TVPs can efficiently pass large amounts of data. 

This is efficient because the client API internally bulk inserts the rows into tempdb before executing the procedure. And you don't need to load all the data into memory on the client.

You can also take a look at this helpful article to learn more on TVP performance:


Maximizing Performance with Table-Valued Parameters