only saves 10k rows per dataframe, then starts over