Run after load_data_into_db.py. Reads from crop_prices.db (or data/crop_prices.csv if no DB). Streams row-by-row so it does NOT load everything into memory (avoids laptop hang).