CSV to SQL

CSV डेटा से SQL INSERT स्टेटमेंट बनाएं

उदाहरण देखें

CSV इनपुट

SQL आउटपुट

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है
SQL यहाँ दिखाई देगा…
तालिका का नाम:

CSV से SQL रूपांतरण क्या है?

CSV से SQL रूपांतरण, comma-separated values को ऐसे Structured Query Language स्टेटमेंट में बदलता है जिन्हें एक संबंधात्मक डेटाबेस execute कर सके। सबसे सामान्य आउटपुट एक जोड़ा होता है: एक CREATE TABLE स्टेटमेंट जो कॉलम परिभाषित करता है, और एक या अधिक INSERT INTO स्टेटमेंट जो CSV फ़ाइल की पंक्तियों से उन कॉलमों को डेटा से भरते हैं।

CSV फ़ाइलें RFC 4180 मानक का पालन करती हैं। प्रत्येक पंक्ति एक रिकॉर्ड होती है, फ़ील्ड एक delimiter (सामान्यतः अल्पविराम) द्वारा अलग होते हैं, और जिन फ़ील्ड में delimiter या नई लाइन हो उन्हें दोहरे उद्धरण चिह्नों में लपेटा जाता है। SQL, दूसरी ओर, PostgreSQL, MySQL, SQLite और SQL Server जैसी प्रणालियों में डेटा प्रबंधन की मानक भाषा है। इन दोनों प्रारूपों के बीच रूपांतरण, सॉफ़्टवेयर विकास में सबसे अधिक किए जाने वाले डेटा आयात कार्यों में से एक है।

एक अच्छा CSV-से-SQL कनवर्टर quoting को संभालता है, मानों के भीतर single quotes को escape करता है (SQL standard के अनुसार उन्हें '' में double करके), column headers को valid SQL identifiers में map करता है, और optionally data types का अनुमान लगा सकता है। इसके अलावा, एक अच्छा कनवर्टर header names को normalize करता है (spaces और hyphens को underscores से बदलकर) और output को एक transaction block में लपेटता है, ताकि import fail होने पर table में आधा-अधूरा डेटा जाने की बजाय changes rollback हो जाएं। कनवर्टर के बिना, कुछ सौ rows के लिए भी INSERT statements हाथ से लिखना गलतियों से भरा और धीमा होता है।

CSV से SQL कनवर्टर का उपयोग क्यों करें?

Spreadsheet data से SQL INSERT statements हाथ से लिखना थकाऊ है और syntax errors की संभावना बढ़ाता है। एक कनवर्टर repetitive काम को automate करता है ताकि आप schema design और data validation पर ध्यान दे सकें।

सेकंड में SQL बनाएं
अपना CSV paste करें और run करने के लिए तैयार SQL output पाएं। Strings को manually quote करने, apostrophes escape करने, या columns गिनने की ज़रूरत नहीं। Conversion पूरी तरह आपके browser में होता है।
🔒
डेटा ब्राउज़र में सुरक्षित रखें
आपका CSV कभी भी आपकी मशीन नहीं छोड़ता। सभी पार्सिंग और SQL निर्माण क्लाइंट-साइड होता है, जिसका अर्थ है कोई सर्वर अपलोड नहीं, कोई लॉगिंग नहीं, और आपके डेटासेट तक किसी तृतीय-पक्ष की पहुँच नहीं।
🎯
सही SQL syntax generate करें
मानों के भीतर single quotes को SQL standard के अनुसार '' से escape किया जाता है। Column names को valid identifiers के रूप में sanitize किया जाता है। Output PostgreSQL, MySQL और SQLite के लिए syntactically correct है।
📋
किसी भी CSV संरचना को संभालें
यह उपकरण स्वचालित रूप से delimiter (अल्पविराम, अर्धविराम, टैब, पाइप) detect करता है और RFC 4180 नियमों का पालन करते हुए अंतर्निहित अल्पविराम या नई लाइन वाले उद्धृत फ़ील्ड को संभालता है।

CSV से SQL के उपयोग के मामले

डेटाबेस सीडिंग
विकास या स्टेजिंग डेटाबेस के लिए CSV फ़िक्सचर फ़ाइल को INSERT स्टेटमेंट में बदलें। CI पाइपलाइन में उपयोगी जहाँ आपको ORM के बिना दोहराए जाने योग्य सीड डेटा की आवश्यकता होती है।
डेटा माइग्रेशन
एक प्रणाली (CRM, स्प्रेडशीट, पुराना ऐप्लिकेशन) से निर्यात किए गए डेटा को नए संबंधात्मक डेटाबेस में स्थानांतरित करें। SQL बनाएं, उसकी समीक्षा करें, फिर उसे किसी ट्रांज़ैक्शन में चलाएं।
बैकएंड API विकास
CSV से परीक्षण डेटा के साथ स्थानीय PostgreSQL या MySQL इंस्टेंस को त्वरित रूप से भरें। जब आपको केवल एकबारगी लोड की आवश्यकता हो तो यह माइग्रेशन स्क्रिप्ट लिखने से तेज़ है।
QA और परीक्षण स्वचालन
एकीकरण परीक्षणों से पहले डेटाबेस स्थिति स्थापित करने के लिए CSV परीक्षण फ़िक्सचर से SQL बनाएं। परीक्षण चलाने के बीच तालिका को पुनः स्थापित करने के लिए टियरडाउन स्क्रिप्ट के साथ जोड़ें।
डेटा विश्लेषण की तैयारी
तदर्थ क्वेरी के लिए CSV डेटासेट को SQLite में लोड करें। SQLite सीधे SQL INSERT स्टेटमेंट पढ़ता है, जिससे स्प्रेडशीट निर्यात से क्वेरी योग्य डेटा तक एक तीव्र मार्ग बनता है।
SQL सीखना
छात्र नमूना CSV को SQL में बदलकर शुरू से स्कीमा स्थापित किए बिना वास्तविक दिखने वाले डेटा पर SELECT, JOIN और समुच्चय क्वेरी का अभ्यास कर सकते हैं।

SQL डेटा प्रकार संदर्भ

CSV को SQL में बदलते समय, प्रत्येक कॉलम डिफ़ॉल्ट रूप से TEXT होता है क्योंकि CSV में कोई प्रकार मेटाडेटा नहीं होता। यदि आप कॉलम प्रकार जानते हैं, तो CREATE TABLE आउटपुट में TEXT को बदल सकते हैं। यह तालिका सबसे सामान्य SQL प्रकार और उनके उपयोग का समय दर्शाती है।

प्रकारउपयोगटिप्पणियाँ
TEXT / VARCHARStrings, mixed contentDefault safe choice; works in every SQL dialect
INTEGER / INTWhole numbers (age, count, ID)Use when column contains only digits with no decimals
REAL / FLOATDecimal numbers (price, rate)Needed for columns with dots like 19.99 or 3.14
DATEISO 8601 dates (2024-01-15)Requires consistent formatting; varies by database
BOOLEANtrue/false, 1/0, yes/noMySQL uses TINYINT(1); PostgreSQL has native BOOL
NUMERIC / DECIMALExact precision (currency)Specify scale: DECIMAL(10,2) for money columns
BLOB / BYTEABinary dataRarely needed in CSV imports; use for hex-encoded fields

SQL डायलेक्ट तुलना

SQL syntax विभिन्न डेटाबेस इंजनों के बीच भिन्न होती है। बनाए गए INSERT स्टेटमेंट मानक SQL का उपयोग करते हैं जो अधिकांश प्रणालियों में काम करता है, लेकिन कुछ विशेषताएं भिन्न होती हैं। यह तालिका उन अंतरों का सारांश देती है जो CSV डेटा आयात करते समय सबसे अधिक महत्वपूर्ण हैं।

विशेषताPostgreSQLMySQLSQLiteSQL Server
Identifier quoting"col"`col`"col"[col]
String escape'''' or \'''''
INSERT syntaxINSERT INTOINSERT INTOINSERT INTOINSERT INTO
Batch INSERTVALUES (),()…VALUES (),()…VALUES (),()…max 1000 rows
Auto-incrementSERIALAUTO_INCREMENTAUTOINCREMENTIDENTITY(1,1)
Upsert / mergeON CONFLICTON DUPLICATE KEYON CONFLICTMERGE
NULL handlingIS NULLIS NULL / <=>IS NULLIS NULL
COPY from CSVCOPY … FROMLOAD DATA INFILE.importBULK INSERT

INSERT बनाम COPY: आयात विधि का चुनाव

छोटे से मध्यम डेटासेट (10,000 पंक्तियों से कम) के लिए, INSERT स्टेटमेंट अच्छी तरह काम करते हैं और हर SQL डेटाबेस में उपयोग योग्य हैं। बड़े आयात के लिए, डेटाबेस बल्क-लोडिंग आदेश प्रदान करते हैं जो SQL पार्सर को पूरी तरह बायपास करते हैं।

INSERT INTO
Standard SQL। हर जगह काम करता है। हर row को SQL statement के रूप में parse किया जाता है, इसलिए बड़े datasets के लिए overhead ज़्यादा होता है। Conditional logic support करता है (ON CONFLICT, ON DUPLICATE KEY)। Seed data, छोटे migrations और उन cases के लिए best है जहाँ row-level control चाहिए।
COPY / LOAD DATA
डेटाबेस-विशिष्ट बल्क लोडर। PostgreSQL COPY का उपयोग करता है, MySQL LOAD DATA INFILE का, SQLite .import का, और SQL Server BULK INSERT का। SQL पार्सर को छोड़कर CSV को सीधे पढ़ता है। बड़ी फ़ाइलों (100K+ पंक्तियों) के लिए 10-100 गुना तेज़। सर्वर या क्लाइंट पर फ़ाइल सिस्टम तक पहुँच आवश्यक है।

कोड उदाहरण

ये उदाहरण दर्शाते हैं कि विभिन्न भाषाओं में CSV को SQL INSERT स्टेटमेंट में कैसे बदला जाए। प्रत्येक single quote escape करने और कॉलम नाम शुद्धिकरण को संभालता है।

JavaScript (Node.js)
// CSV → SQL INSERT statements
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

function csvToSql(csv, table = 'data') {
  const rows = csv.trim().split('\n').map(r => r.split(','))
  const [headers, ...data] = rows
  const cols = headers.map(h => h.trim().toLowerCase().replace(/\s+/g, '_'))

  const values = data.map(row =>
    '  (' + row.map(v => `'${v.replace(/'/g, "''").trim()}'`).join(', ') + ')'
  )

  return `INSERT INTO ${table} (${cols.join(', ')}) VALUES
${values.join(',\n')};`
}

console.log(csvToSql(csv, 'users'))
// → INSERT INTO users (name, age, city) VALUES
//     ('Alice', '30', 'Berlin'),
//     ('Bob', '25', 'Tokyo');
Python
import csv
import io

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.reader(io.StringIO(csv_string))
headers = [h.strip().lower().replace(' ', '_') for h in next(reader)]

table = 'users'
rows = list(reader)

# CREATE TABLE
col_defs = ', '.join(f'{h} TEXT' for h in headers)
print(f'CREATE TABLE {table} ({col_defs});')
# → CREATE TABLE users (name TEXT, age TEXT, city TEXT);

# INSERT statements
for row in rows:
    vals = ', '.join(f"'{v.replace(chr(39), chr(39)*2)}'" for v in row)
    print(f"INSERT INTO {table} ({', '.join(headers)}) VALUES ({vals});")
# → INSERT INTO users (name, age, city) VALUES ('Alice', '30', 'Berlin');
# → INSERT INTO users (name, age, city) VALUES ('Bob', '25', 'Tokyo');
Go
package main

import (
	"encoding/csv"
	"fmt"
	"strings"
)

func csvToSQL(data, table string) string {
	r := csv.NewReader(strings.NewReader(data))
	records, _ := r.ReadAll()
	if len(records) < 2 {
		return ""
	}

	headers := records[0]
	var vals []string
	for _, row := range records[1:] {
		escaped := make([]string, len(row))
		for i, v := range row {
			escaped[i] = "'" + strings.ReplaceAll(v, "'", "''") + "'"
		}
		vals = append(vals, "  ("+strings.Join(escaped, ", ")+")")
	}

	return fmt.Sprintf("INSERT INTO %s (%s) VALUES\n%s;",
		table, strings.Join(headers, ", "), strings.Join(vals, ",\n"))
}

func main() {
	csv := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	fmt.Println(csvToSQL(csv, "users"))
	// → INSERT INTO users (name, age, city) VALUES
	//     ('Alice', '30', 'Berlin'),
	//     ('Bob', '25', 'Tokyo');
}
CLI (sqlite3 / psql)
# SQLite: import CSV directly into a table
sqlite3 mydb.db <<EOF
.mode csv
.import data.csv users
SELECT * FROM users LIMIT 5;
EOF

# PostgreSQL: COPY from CSV file (server-side)
psql -c "COPY users FROM '/path/to/data.csv' WITH (FORMAT csv, HEADER true);"

# PostgreSQL: \copy from CSV (client-side, no superuser needed)
psql -c "\copy users FROM 'data.csv' WITH (FORMAT csv, HEADER true);"

# MySQL: LOAD DATA from CSV
mysql -e "LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY '\n' IGNORE 1 ROWS;"

अक्सर पूछे जाने वाले प्रश्न

SQL आउटपुट में CSV मानों के single quotes को कैसे handle किया जाता है?
CSV मान में हर single quote (') को SQL आउटपुट में '' से replace किया जाता है। यह SQL standard escape sequence है। उदाहरण के लिए, "O'Brien" जैसा मान INSERT स्टेटमेंट में 'O''Brien' बन जाता है। यह PostgreSQL, MySQL, SQLite और SQL Server में काम करता है।
क्या मैं MySQL या PostgreSQL जैसे किसी विशिष्ट डेटाबेस के लिए CSV को SQL में बदल सकता हूँ?
Generate हुए INSERT statements standard SQL syntax use करते हैं जिसे MySQL और PostgreSQL दोनों accept करते हैं। मुख्य फ़र्क identifier quoting में है: PostgreSQL double quotes use करता है, MySQL backticks। Basic INSERT operations के लिए output बिना किसी बदलाव के दोनों में काम करता है।
यदि मेरी CSV में कोई हेडर पंक्ति नहीं है तो क्या होता है?
कनवर्टर पहली पंक्ति को कॉलम हेडर के रूप में मानता है। यदि आपकी CSV में हेडर नहीं हैं, तो रूपांतरण से पहले एक हेडर पंक्ति जोड़ें, अन्यथा पहली डेटा पंक्ति CREATE TABLE स्टेटमेंट में कॉलम नाम बन जाएगी। अधिकांश कनवर्टर, इस सहित, हेडर पंक्ति की आवश्यकता रखते हैं।
क्या CSV से SQL रूपांतरण के लिए पंक्ति सीमा है?
चूँकि रूपांतरण आपके ब्राउज़र में होता है, व्यावहारिक सीमा आपके डिवाइस की मेमोरी पर निर्भर करती है। दसों हज़ार पंक्तियों वाली फ़ाइलें बिना किसी समस्या के परिवर्तित होती हैं। बहुत बड़ी फ़ाइलों (500K+ पंक्तियों) के लिए, INSERT स्टेटमेंट के बजाय डेटाबेस के मूल COPY या LOAD DATA आदेश का उपयोग करने पर विचार करें।
आउटपुट सभी कॉलमों के लिए INTEGER या DATE के बजाय TEXT क्यों उपयोग करता है?
CSV एक सादा पाठ प्रारूप है जिसमें कोई प्रकार मेटाडेटा नहीं होता। कनवर्टर गलत प्रकार अनुमान से बचने के लिए TEXT को सुरक्षित डिफ़ॉल्ट के रूप में उपयोग करता है। अपना डेटा देखने के बाद बनाए गए CREATE TABLE स्टेटमेंट में कॉलम प्रकार बदल सकते हैं। संख्यात्मक कॉलमों के लिए INTEGER और दिनांक कॉलमों के लिए DATE सामान्य समायोजन हैं।
अर्धविराम या टैब को सीमांकक के रूप में उपयोग करने वाली CSV फ़ाइलों को कैसे संभालूँ?
यह उपकरण आपकी CSV की पहली पंक्ति का विश्लेषण करके स्वचालित रूप से delimiter detect करता है। यह अल्पविराम, अर्धविराम, टैब और पाइप वर्णों की जाँच करता है, फिर जो सबसे अधिक आता है उसका उपयोग करता है। अर्धविराम का उपयोग करने वाले यूरोपीय प्रारूप की CSV फ़ाइलें बिना किसी कॉन्फ़िगरेशन परिवर्तन के काम करती हैं।
यदि मैं इसे सीधे चलाता हूँ तो क्या बनाया गया SQL इंजेक्शन से सुरक्षित है?
आउटपुट single quotes escape करता है, जो accidental syntax errors को रोकता है। हालाँकि, यदि आपका CSV डेटा किसी अविश्वसनीय स्रोत से आता है, तो बनाए गए SQL के साथ वैसा ही व्यवहार करें जैसा आप किसी भी असत्यापित इनपुट के साथ करते हैं। production database पर run करने से पहले आउटपुट की समीक्षा करें। Programmatic import के लिए, string concatenation की तुलना में parameterized queries हमेशा अधिक सुरक्षित होती हैं।