Theory
Principal इसे Excel में चाहते हैं
ResultDesk की weak-subject report (आपकी Unit 1 वाली GROUP BY query) ने सबको impress किया। Principal का follow-up: "मुझे mail कीजिए, मैं इसे Excel में खोलूँगा।"
Excel आपके terminal से SQL result grids नहीं पढ़ता। यह CSV पढ़ता है।
पिछला lesson data अंदर CSV से बहा; आज यह बाहर बहता है। वही shell, चार settings, और यहाँ एक pleasant surprise है: आप सिर्फ़ tables नहीं, बल्कि आप लिख सकने वाली किसी भी query का result export कर सकते हैं।
Theory
Printer redirect करना
अब तक, हर SELECT आपकी screen पर print होता था: shell का default printer।
Export करना बस उस printer को redirect करना है: .mode csv paper format चुनता है, .headers on column names को पहली line के रूप में print करता है, .output result.csv screen को एक file से बदलता है। फिर आप SELECT हमेशा की तरह चलाते हैं, और "printout" file में उतरता है। हो जाने पर printer वापस swap कीजिए।
Follow along
Canonical export sequence (order मायने रखता है)
- .headers on File की पहली line column names ढोएगी: Excel और pandas यही expect करते हैं।
- .mode csv Output format comma-separated बनता है (values में commas होने पर सही तरीक़े से quoted)।
- .output weak_subjects.csv यहाँ से, results file में जाते हैं, screen पर नहीं।
- SELECT चलाइए SELECT subject, AVG(score) AS average FROM marks GROUP BY subject HAVING AVG(score) < 50; Result set HI file body है।
- .output stdout Printer को वापस screen पर point कीजिए। इसे skip कीजिए और आपका अगला घंटा भर queries file में ग़ायब हो जाता है।
Theory
आप queries export करते हैं, सिर्फ़ tables नहीं
एक पूरी table सबसे सादी query है: SELECT * FROM marks;
पर असली power: Unit 1 ने जो कुछ भी सिखाया वह identically export होता है। students और marks का join। CASE grade bands। HAVING-filtered averages। Query लिखिए, और इसका result CSV बन जाता है।
यानी reports पहले SQL में shaped होती हैं (filter, join, summarise), दूसरे export। बाद में Excel में data shape करना amateur path है; आपके पास एक database है।
Quiz
एक student बिना .headers on के export करता है। Principal CSV को Excel में खोलते हैं। Spreadsheet की पहली ROW क्या दिखाती है?
- पहली data row (जैसे, DBMS, 43.5), जिसे Excel फिर column titles मानता है
- जहाँ header होना चाहिए वहाँ empty cells
- SQL query text
- कुछ नहीं: headers के बिना file खुलती ही नहीं
Show the answer
पहली data row (जैसे, DBMS, 43.5), जिसे Excel फिर column titles मानता है
.headers on के बिना, file सीधे data से शुरू होती है, तो पहला record title row बनकर masquerade करता है: Excel में फिर sorting और charts सब कुछ mislabel करते हैं, और pandas का read_csv भी वही mistake करता है। File ठीक खुलती है (option D ग़लत है) और SQL text कभी output files में नहीं आता। एक भूली setting, एक subtly ग़लत report: यही कारण है sequence को चार steps के रूप में drill किया जाता है।
Think first
Dump या CSV? Destination के अनुसार चुनिए
दो requests: (1) exam cell marks को एक file में चाहता है जिसे वे अगले साल अपने OWN SQLite database में rebuild कर सकें; (2) principal Excel में chart करने के लिए per-city average scores चाहते हैं। tap करने से पहले: हर एक के लिए कौन सा export mechanism फिट बैठता है, और क्यों?
Show the answer
(1) .dump marks: उन्हें structure + data replayable SQL के रूप में चाहिए: एक database-to-database transfer।
(2) GROUP BY query का CSV export: data-only, spreadsheet-ready, कोई CREATE TABLE noise नहीं।
Rule: destination SQLite हो तो dump, destination spreadsheet, pandas, या इंसान हो तो CSV। Exams इसे ".dump और CSV export के बीच अंतर बताइए" के रूप में phrase करते हैं: destination और content (SQL बनाम data-only) से जवाब दीजिए।
Watch out
दो lingering-state traps
Shell आपकी settings तब तक रखता है जब तक बदली न जाएँ:
- .output किसी file पर छोड़ा हर बाद का result निगल लेता है: हमेशा stdout पर वापस जाइए।
- .mode csv छोड़ा आपका अगला interactive SELECT aligned columns के बजाय सादे commas print करता है: on-screen reading के लिए .mode column से वापस switch कीजिए।
पहले settings, फिर query, फिर cleanup: यही sequence वह जवाब है जो exams चाहते हैं।
Theory
यह exact file Unit 4 में वापस आती है
weak_subjects.csv रखिए: Unit 4 में, pandas इसे pd.read_csv() से वापस पढ़ेगा और Unit 5 में matplotlib से plot करेगा। इस subject का पूरा circle: SQL data shape करता है, CSV इसे ढोता है, Python analyse और chart करता है। अब आपने CSV bridge के दोनों आधे बना लिए हैं; अगला, Python driving लेता है।
Summary
Key takeaways
- Export sequence: .headers on, .mode csv, .output file.csv, SELECT चलाइए, .output stdout।
- कोई भी query result export होता है: joins, GROUP BY summaries, CASE bands, सिर्फ़ पूरी tables नहीं।
- .headers on मायने रखता है: इसके बिना, पहली data row downstream column titles बनकर masquerade करती है।
- Dump बनाम CSV: SQLite में rebuild करने के लिए SQL बनाम spreadsheets और pandas के लिए data-only।
- Shell settings persist करते हैं: export के बाद .output को stdout पर और .mode को column पर लौटाइए।
- Memory hook: printer redirect कीजिए, query print कीजिए, वापस redirect कीजिए।