Reviewed by Aditya Kumar · Last reviewed 2026-03-24
**Flow:** Read JSON → pd.json_normalize (flatten nested) → DataFrame → to_sql. For multiple files: concat then load. Use chunksize if large. **Schema:** json_normalize with record_path, meta for nested. Validate required keys. Handle missing: fillna or reject. **Production:**...
Flow: Read JSON → pd.json_normalize (flatten nested) → DataFrame → to_sql. For multiple files: concat then load. Use chunksize if large.
Schema: json_normalize with record_path, meta for nested. Validate required keys. Handle missing: fillna or reject.
Production: Transaction per file (all-or-nothing). Bulk insert (to_sql with method='multi'). Idempotency: upsert by (date, id) or truncate+load. Use SQLAlchemy for connection management.
df = pd.json_normalize(data, record_path='sales', meta=['store_id','date'])
df.to_sql('sales', engine, if_exists='append', index=False, chunksize=5000)
Red Flag: Loading all JSON into memory. Pro-Move: 'json_normalize + to_sql chunksize=5000—we load 100 files/day without OOM.'
According to DataEngPrep.tech, this is one of the most frequently asked Python/Coding interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.