CSV (Comma-Separated Values) হলো একটি সাধারণ-পাঠ্য সারণী ফরম্যাট যেখানে প্রতিটি লাইন একটি ডেটা রেকর্ড এবং একটি রেকর্ডের মধ্যে ফিল্ডগুলো একটি ডিলিমিটার অক্ষর দ্বারা পৃথক করা হয়, সাধারণত কমা। ব্যক্তিগত কম্পিউটিংয়ের প্রথম দিন থেকে CSV একটি মানক বিনিময় ফরম্যাট হিসেবে প্রচলিত, RFC 4180 দ্বারা আনুষ্ঠানিকভাবে সংজ্ঞায়িত। স্প্রেডশিট, ডেটাবেজ ও ডেটা রপ্তানি টুলগুলো CSV তৈরি করে কারণ এটি সহজ, সংক্ষিপ্ত এবং প্রায় সব প্রোগ্রামিং ভাষায় পাঠযোগ্য।
JSON (JavaScript Object Notation) কাঠামোবদ্ধ ডেটাকে কী-মান জোড়া ও ordered অ্যারে হিসেবে উপস্থাপন করে। CSV-র বিপরীতে, JSON নেস্টেড অবজেক্ট, টাইপযুক্ত মান (সংখ্যা, বুলিয়ান, null) এবং পরিবর্তনশীল দৈর্ঘ্যের রেকর্ড সমর্থন করে। JavaScript ইঞ্জিন নেটিভলি JSON বোঝে বলে এটি ব্রাউজার-থেকে-সার্ভার ডেটা বিনিময় ও REST API প্রতিক্রিয়ার প্রধান ফরম্যাট। এই বৈশিষ্ট্যগুলো JSON-কে ওয়েব API, কনফিগারেশন ফাইল এবং MongoDB ও CouchDB-র মতো NoSQL ডেটাবেজের ডিফল্ট ফরম্যাট করে তুলেছে।
CSV থেকে JSON রূপান্তর মানে টেবিলের প্রতিটি সারিকে একটি JSON অবজেক্টে পরিণত করা, হেডার সারিকে প্রপার্টির নাম হিসেবে ও কক্ষের মানকে প্রপার্টির মান হিসেবে ব্যবহার করা। ফলাফল সাধারণত অবজেক্টের একটি JSON অ্যারে হয়। এই রূপান্তর তখন প্রয়োজন যখন সমতল সারণী ডেটাকে কোনো সিস্টেমে দিতে হয় যা কাঠামোবদ্ধ JSON ইনপুট প্রত্যাশা করে — যেমন REST API, ফ্রন্টএন্ড ডেটা টেবিল কম্পোনেন্ট, বা ডকুমেন্ট-ভিত্তিক ডেটাবেজ।
কেন এই টুল ব্যবহার করবেন?
এই কনভার্টার আপনার CSV ব্রাউজারেই পার্স করে, তাৎক্ষণিকভাবে JSON আউটপুট তৈরি করে এবং কখনো আপনার ডেটা কোনো সার্ভারে পাঠায় না।
⚡
তাৎক্ষণিক রূপান্তর
CSV পেস্ট করুন এবং সঙ্গে সঙ্গে JSON আউটপুট পান। কোনো সার্ভার রাউন্ড-ট্রিপ বা ফাইল আপলোডের অপেক্ষা নেই। আপনি টাইপ করার সাথে সাথে রূপান্তর ঘটে।
🔒
গোপনীয়তা-সংরক্ষী প্রক্রিয়াকরণ
আপনার ডেটা আপনার ব্রাউজার ট্যাবেই থাকে। নেটওয়ার্কে কিছু পাঠানো হয় না। অভ্যন্তরীণ ডেটাসেট, credentials বা ব্যক্তিগত তথ্যের জন্য নিরাপদ যা আপনার মেশিন ছেড়ে যাওয়া উচিত নয়।
🔀
ডিলিমিটার স্বয়ংক্রিয় শনাক্তকরণ
টুলটি কমা, ট্যাব, সেমিকোলন ও পাইপ ডিলিমিটার চিনতে পারে। আপনার ফাইলে অস্বাভাবিক বিভাজক থাকলে ডিলিমিটার ম্যানুয়ালিও নির্ধারণ করতে পারেন।
📋
কপি বা ডাউনলোড
এক ক্লিকে JSON ফলাফল ক্লিপবোর্ডে কপি করুন বা .json ফাইল হিসেবে ডাউনলোড করুন। আপনার কোড, API ক্লায়েন্ট বা ডেটাবেজ ইম্পোর্টে সরাসরি ব্যবহারের জন্য প্রস্তুত।
CSV থেকে JSON ব্যবহারের ক্ষেত্র
ফ্রন্টএন্ড ডেভেলপমেন্ট
প্রোটোটাইপিংয়ের সময় React, Vue বা Angular কম্পোনেন্টে মক ডেটা হিসেবে ব্যবহারের জন্য ডিজাইন টুল বা স্প্রেডশিট থেকে CSV রপ্তানিকে JSON-এ রূপান্তর করুন।
ব্যাকএন্ড API সিডিং
CSV ডেটাবেজ ডাম্পকে REST বা GraphQL API সিড করার জন্য JSON পেলোডে রূপান্তর করুন। অনেক ORM ও মাইগ্রেশন টুল প্রাথমিক ডেটা লোডিংয়ের জন্য JSON ফিক্সচার গ্রহণ করে।
DevOps কনফিগারেশন
Ansible প্লেবুক, Terraform ভেরিয়েবল ফাইল বা CI/CD পাইপলাইন কনফিগে ব্যবহারের জন্য CSV ইনভেন্টরি তালিকা বা পরিবেশ ম্যাট্রিক্সকে JSON-এ রূপান্তর করুন।
QA পরীক্ষা ডেটা প্রস্তুতি
ডেটা-চালিত পরীক্ষার জন্য Jest, pytest বা Playwright-এর মতো পরীক্ষা ফ্রেমওয়ার্ক ব্যবহারযোগ্য JSON অ্যারেতে স্প্রেডশিট-ভিত্তিক পরীক্ষা ম্যাট্রিক্স রূপান্তর করুন।
ডেটা ইঞ্জিনিয়ারিং পাইপলাইন
MongoDB, Elasticsearch বা BigQuery-র JSON ইনজেস্ট মোডে লোড করার জন্য SQL কোয়েরি বা ETL রপ্তানি থেকে CSV আউটপুটকে JSON-এ রূপান্তর করুন।
শিক্ষার্থী প্রকল্প ও শেখার কাজ
ওয়েব ডেভেলপমেন্ট কোর্সওয়ার্ক, টিউটোরিয়াল বা ব্যক্তিগত প্রকল্পে ব্যবহারের জন্য নমুনা CSV ডেটাসেট (Kaggle, সরকারি উন্মুক্ত ডেটা পোর্টাল) দ্রুত JSON-এ রূপান্তর করুন।
CSV ডিলিমিটার রেফারেন্স
CSV ফাইলে সবসময় কমা ব্যবহার হয় না। ডিলিমিটার নির্ভর করে লোকেল, রপ্তানিকারী অ্যাপ্লিকেশন ও ডেটার বিষয়বস্তুর উপর। চারটি সবচেয়ে সাধারণ ডিলিমিটার ও কখন প্রতিটি সাধারণত ব্যবহৃত হয়:
ডিলিমিটার
মানক
এক্সটেনশন
মন্তব্য
Comma (,)
RFC 4180 default
.csv
Most common; Excel default export
Tab (\t)
TSV variant
.tsv
Avoids quoting fields that contain commas
Semicolon (;)
European locale CSV
.csv
Used where comma is the decimal separator (DE, FR, BR)
Pipe (|)
Fixed-width alternative
.csv
Rare in field values, good for messy data
CSV বনাম JSON: কাঠামোগত পার্থক্য
দুটি ফরম্যাটের মধ্যে এই পার্থক্যের কারণেই রূপান্তরের সময় হেডার ম্যাপিং, টাইপ অনুমান ও অনুপস্থিত মান পরিচালনায় সুস্পষ্ট সিদ্ধান্ত নেওয়া জরুরি।
CSV
সমতল, সারি-ভিত্তিক ফরম্যাট। প্রতিটি রেকর্ডে একই সংখ্যক ফিল্ড থাকে। পার্সার টাইপ ধরে না নিলে সব মান স্ট্রিং। নেস্টিং বা মিশ্র-দৈর্ঘ্যের রেকর্ড সমর্থিত নয়। RFC 4180 অনুযায়ী হেডার সারি ঐচ্ছিক, তবে অর্থপূর্ণ JSON রূপান্তরের জন্য প্রয়োজন।
JSON
Tree-structured, self-describing ফরম্যাট। প্রতিটি অবজেক্টে ভিন্ন কী থাকতে পারে। মান টাইপযুক্ত: স্ট্রিং, সংখ্যা, বুলিয়ান, null, অবজেক্ট বা অ্যারে। যেকোনো গভীরতায় নেস্টিং সমর্থিত। JSON স্পেসিফিকেশন (ECMA-404) প্রপার্টির ক্রম নিশ্চিত করে না, তবে বেশিরভাগ পার্সার সন্নিবেশ ক্রম বজায় রাখে।
কোড উদাহরণ
জনপ্রিয় ভাষা ও CLI টুলে প্রোগ্রামগতভাবে CSV থেকে JSON রূপান্তরের পদ্ধতি:
import csv, json, io
csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""
reader = csv.DictReader(io.StringIO(csv_string))
data = [row for row in reader]
print(json.dumps(data, indent=2))
# → [{"name": "Alice", "age": "30", "city": "Berlin"}, ...]
# With type coercion (age as int)
import pandas as pd
df = pd.read_csv(io.StringIO(csv_string))
print(df.to_json(orient="records", indent=2))
# → [{"name": "Alice", "age": 30, "city": "Berlin"}, ...]
Go
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"strings"
)
func main() {
input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
r := csv.NewReader(strings.NewReader(input))
records, _ := r.ReadAll()
headers := records[0]
var result []map[string]string
for _, row := range records[1:] {
obj := make(map[string]string)
for i, h := range headers {
obj[h] = row[i]
}
result = append(result, obj)
}
out, _ := json.MarshalIndent(result, "", " ")
fmt.Println(string(out))
// → [{"age":"30","city":"Berlin","name":"Alice"}, ...]
}
CLI (jq + Miller)
# Using Miller (mlr) — handles quoting, types, and edge cases
mlr --icsv --ojson cat data.csv
# → [{"name": "Alice", "age": 30, "city": "Berlin"}, ...]
# Using csvjson from csvkit (Python-based)
csvjson data.csv
# Using jq with @csv (reverse: JSON → CSV)
# For CSV → JSON, pipe through Miller or Python
cat data.csv | python3 -c "
import csv, json, sys
reader = csv.DictReader(sys.stdin)
json.dump(list(reader), sys.stdout, indent=2)
"
প্রায়শই জিজ্ঞাসিত প্রশ্ন
হেডার সারি ছাড়া CSV ফাইল কনভার্টার কীভাবে পরিচালনা করে?
আপনার CSV-তে হেডার সারি না থাকলে কনভার্টার স্বয়ংক্রিয়ভাবে তৈরি কী ব্যবহার করে, যেমন "field1", "field2" ইত্যাদি। সর্বোত্তম ফলাফলের জন্য রূপান্তরের আগে একটি হেডার সারি যোগ করুন, অথবা পরে JSON আউটপুটে কীগুলো পুনর্নামকরণ করুন।
কমা বা নতুন লাইনযুক্ত উদ্ধৃত ফিল্ডের কী হয়?
পার্সার RFC 4180 উদ্ধৃতি নিয়ম অনুসরণ করে। double quote-এ আবদ্ধ ফিল্ডে কমা, নতুন লাইন এবং এমনকি double quote-ও থাকতে পারে ("" হিসেবে escape করা)। কনভার্টার বাইরের উদ্ধৃতি সরিয়ে ভেতরের বিষয়বস্তু একটি JSON স্ট্রিং মান হিসেবে সংরক্ষণ করে।
রূপান্তরে সংখ্যা ও বুলিয়ানের মতো ডেটা টাইপ কি সংরক্ষিত হয়?
CSV একটি অটাইপড ফরম্যাট; সব কক্ষের মান স্ট্রিং। ডেটা হারানো এড়াতে এই কনভার্টার ডিফল্টভাবে স্ট্রিং মান আউটপুট করে। টাইপযুক্ত আউটপুট দরকার হলে আপনার অ্যাপ্লিকেশনে JSON ফলাফল পার্স করুন এবং ফিল্ডগুলো স্পষ্টভাবে রূপান্তর করুন। Papa Parse (JavaScript) ও pandas (Python)-এর মতো লাইব্রেরি পার্সিংয়ের সময় গতিশীল টাইপিং বিকল্প দেয়।
কমার পরিবর্তে সেমিকোলন বা ট্যাব দিয়ে CSV রূপান্তর করা যাবে?
হ্যাঁ। টুলটি কমা, ট্যাব, সেমিকোলন ও পাইপ ডিলিমিটার সমর্থন করে। ড্রপডাউন থেকে সঠিক ডিলিমিটার নির্বাচন করুন, অথবা স্বয়ংক্রিয় শনাক্তকরণ ব্যবহার করুন। সেমিকোলন ইউরোপীয় লোকেল CSV রপ্তানিতে সাধারণ, যেখানে কমা দশমিক বিভাজক হিসেবে ব্যবহৃত হয়।
CSV ইনপুটের জন্য কোনো ফাইল সাইজ সীমা আছে?
প্রক্রিয়াকরণ সম্পূর্ণরূপে আপনার ব্রাউজারে চলে বলে ব্যবহারিক সীমা আপনার ডিভাইসের উপলব্ধ মেমোরির উপর নির্ভর করে। আধুনিক হার্ডওয়্যারে ১০–২০ MB পর্যন্ত ফাইল সাধারণত কোনো সমস্যা ছাড়াই রূপান্তরিত হয়। অত্যন্ত বড় ফাইলের (কয়েকশো MB) জন্য Node.js-এ Papa Parse বা Python-এর csv মডিউলের মতো স্ট্রিমিং পার্সার ব্যবহার করুন, যা সব কিছু মেমোরিতে না রেখে ডেটা সারি দরে প্রক্রিয়া করে।
ভিন্ন সংখ্যক কলামযুক্ত CSV সারি কীভাবে পরিচালনা করব?
বাস্তব-বিশ্বের রপ্তানিতে অনিয়মিত CSV (হেডারের চেয়ে কম বা বেশি ফিল্ডযুক্ত সারি) সাধারণ। এই কনভার্টার অনুপস্থিত ফিল্ড খালি স্ট্রিং দিয়ে পূরণ করে এবং হেডার গণনার বাইরের অতিরিক্ত ফিল্ড উপেক্ষা করে। আপনার ডেটা ধারাবাহিকভাবে অনিয়মিত হলে, unescaped ডিলিমিটার বা missing quote-র জন্য উৎস ফাইল পরীক্ষা করুন।
JSON অ্যারে ও JSON অবজেক্ট আউটপুটের মধ্যে পার্থক্য কী?
অবজেক্টের JSON অ্যারে হলো মানক আউটপুট: প্রতিটি CSV সারি অ্যারেতে একটি অবজেক্ট হয়, হেডারের নাম কী হিসেবে ব্যবহৃত হয়। কিছু টুল "কলাম-ভিত্তিক" আউটপুটও দেয় যেখানে প্রতিটি হেডার সেই কলামের সব মানের একটি অ্যারে সহ কী হয়। অ্যারে-অফ-অবজেক্ট ফরম্যাট API, ডেটাবেজ ও ফ্রন্টএন্ড ডেটা বাইন্ডিংয়ের জন্য বেশি প্রচলিত।