NDJSON को SQL में बदलें

यहाँ आप NDJSON को SQL में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।

  • कहाँ चलता है आपके ब्राउज़र में। फ़ाइल कभी अपलोड नहीं होती।
  • नए सिरे से बना SQL के काम करने का तरीक़ा NDJSON से अलग है। यह किसी लॉसी कोडेक जैसा धीरे-धीरे होने वाला नुक़सान नहीं है: SQL जो कुछ व्यक्त कर सकता है, वह हूबहू उतर आता है — और जिसका वहाँ कोई समतुल्य नहीं, वह पूरी तरह रह जाता है।
  • फ़ाइल आकार की सीमा हर फ़ाइल 100 MB तक, मुफ़्त, बिना खाते के।
  • जानने लायक़ एक के अंदर एक बैठी वस्तुएँ चपटी होकर कॉलम बन जाती हैं। गहराई तक बैठा डेटा अपना आकार खो देता है।

एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।

एक लाइन एक स्टेटमेंट बनती है, और गिनती लाइनों जितनी ही है

मेल उतना ही सीधा है जितना सुनने में लगता है। स्रोत की हर ग़ैर-ख़ाली लाइन एक INSERT स्टेटमेंट बनाती है, इसलिए नतीजे में उतने ही स्टेटमेंट हैं जितने रिकॉर्ड इनपुट में थे, और दोनों फ़ाइलों पर लाइन गिनना एक ही संख्या देता है। कोई हेडर हिसाब में नहीं लेना, और डेटा में कुछ ऐसा नहीं जो लाइन तोड़ सके, क्योंकि किसी स्ट्रिंग के भीतर नई लाइन JSON में पहले ही एस्केप हो चुकी होती है।

यही अंदाज़ा इस जोड़ी को काम का बनाता है। अगर लोड 4,12,000 पंक्तियाँ डाली गईं बताए और फ़ाइल में 4,12,000 लाइनें थीं, तो लोड पूरा हुआ — कोई मिलान नहीं, कोई अधूरी पंक्ति का सवाल नहीं, यह चिंता भी नहीं कि किसी उद्धरण-चिह्न वाले फ़ील्ड ने पंक्ति की सीमा निगल ली।

पहला स्टेटमेंट लिखने से पहले पूरी फ़ाइल पढ़ी जाती है

यह वह इकलौती जगह है जहाँ स्ट्रीमिंग वाला स्रोत फ़ॉर्मेट स्ट्रीमिंग बदलाव नहीं दिलाता। कॉलम की सूची हर स्टेटमेंट में एक जैसी होनी चाहिए, और वह हर लाइन की कुँजियों के मेल से बनती है — इसलिए कोई फ़ील्ड जो सिर्फ़ आख़िरी रिकॉर्ड में दिखे, वह भी कॉलम बन जाती है, और जब तक रीडर उसे देख नहीं लेता, कुछ लिखा नहीं जा सकता।

नतीजा एक मेमोरी की छत है, आकार का पायदान नहीं: बदलते वक़्त पूरी फ़ाइल टैब में मौजूद रहती है। कुछ दसियों मेगाबाइट सामान्य है, कुछ सौ पर ब्राउज़र मेहनत करने लगता है, और उससे ज़्यादा पर जवाब है फ़ाइल बाँट देना — NDJSON किसी भी लाइन पर सुरक्षित बँट जाती है।

मिली-जुली घटनाएँ एक तालिका को NULL से भर देती हैं

एक ही फ़ाइल में request, error और job completion डालने वाली लॉग स्ट्रीम में तीन अलग कुँजी-समूह होते हैं। मिलान कुछ छोड़ता नहीं — हर कुँजी एक कॉलम बनती है, और जिस लाइन में वह न हो, वहाँ NULL भर जाता है — और जो तालिका आप घोषित करते हैं वह तीनों ढाँचों का जोड़ है।

एक दोपहर के विश्लेषण के लिए यह अक्सर ठीक है। जो कुछ इससे ज़्यादा टिकना है, उसके लिए फ़ाइल को घटना के प्रकार से छानकर तीन तालिकाओं में लोड करना समझदार सूची और सीधी क्वेरी देता है। पहले बाँटना बस एक jq एक्सप्रेशन प्रति प्रकार का काम है।

CREATE TABLE ख़ुद लिखिए, पूरी फ़ाइल देखकर

नतीजे में कोई DDL नहीं, जान-बूझकर। JSON बताता है कि मान संख्या है, यह नहीं बताता कि कॉलम पूर्णांक होना चाहिए या दो दशमलव वाला संख्यात्मक, वह शून्य हो सकता है या नहीं, प्राइमरी कुँजी क्या है, या टेक्स्ट कितना लंबा हो सकता है — जो स्कीमा का ज़्यादातर हिस्सा है।

व्यावहारिक तरीक़ा है: बदलिए, पहले स्टेटमेंट से कॉलम सूची पढ़िए, उसी के मुताबिक़ तालिका लिखिए, फिर चलाइए। बड़ी फ़ाइलों पर एक बात ज़्यादा मायने रखती है: कॉलम पूरी फ़ाइल के बदलाव से निकालिए, नमूने से नहीं। कोई दुर्लभ फ़ील्ड जो पाँच लाख में एक लाइन में हो, वह भी हर स्टेटमेंट में कॉलम बन जाती है, और पहले हज़ार रिकॉर्ड से बनी तालिका उसी स्टेटमेंट पर पूरा लोड ठुकरा देगी।

लोड को उचित समय में कैसे चलाएँ

फ़ाइल को BEGIN और COMMIT में लपेट दीजिए। वरना हर स्टेटमेंट अपना अलग लेन-देन और अपना अलग राउंड-ट्रिप है, और कुछ लाख पंक्तियों पर यह फ़र्क़ मिनटों की जगह घंटों में नापा जाता है।

यही एक बदलाव पूरी रफ़्तार बदल देता है, क्योंकि किसी भी डेटाबेस के लिए सबसे महँगा हिस्सा हर वाक्य के बाद डिस्क पर उसे पक्का करना है, न कि वाक्य लिखना।

तालिका का नाम कहाँ से आता है

फ़ाइल का नाम जो भी है, उसके एक्सटेंशन के बिना, और जो कुछ SQL पहचानकर्ता में नहीं समा सकता वह अंडरस्कोर से बदल दिया जाता है। हर स्टेटमेंट के बाद बदलने की जगह बदलाव से पहले ही फ़ाइल का नाम बदल लीजिए।

लॉग निर्यात अक्सर तारीख़ या सर्वर के नाम से भरे होते हैं, जो SQL पहचानकर्ता में सीधे नहीं समाते — यह जाँच लेना सस्ता है और चूक जाना महँगा।

क्या लॉग कहीं भेजा जाता है

नहीं। स्टेटमेंट इसी ब्राउज़र टैब में बनते हैं, जो उस फ़ाइल के लिए इकलौती समझदार व्यवस्था है जो आम तौर पर IP पते और उपयोगकर्ता पहचान से भरी होती है।

इसीलिए न पंक्तियों की कोई घोषित सीमा है और न कोई कतार — जो सीमा है वह आपके अपने डिवाइस की याददाश्त है, और लॉग फ़ाइलों के लिए वह लगभग हमेशा MB नहीं, GB में गिनी जाती है।

NDJSON को SQL में ऐसे बदलें

  1. अपनी NDJSON फ़ाइल इस पेज पर छोड़ें, या चुनने के लिए दबाएँ।
  2. लक्ष्य के रूप में SQL चुनें। कन्वर्ज़न आपके ब्राउज़र में होता है और फ़ाइल अपलोड नहीं होती।
  3. तैयार SQL फ़ाइल डाउनलोड कर लें।

NDJSON या SQL: क्या बदलता है

NDJSON और SQL की तुलना
NDJSONSQL
पूरा नामNewline-Delimited JSONSQL INSERT कमांड
फ़ाइल एक्सटेंशन.ndjson, .jsonl.sql
मीडिया टाइपapplication/x-ndjsonapplication/sql
पहली बार प्रकाशित20131986
विनिर्देशISO/IEC 9075
लाइसेंसखुला मानकखुला मानक
आज की स्थितिमौजूदामौजूदा
ब्राउज़र में खुलता हैकोई ब्राउज़र नहींकोई ब्राउज़र नहीं
इसकी जगह विचारणीयJSON, CSVCSV, Parquet

नतीजा खोलना

दोनों तरफ़ के प्रोग्राम अलग हैं: NDJSON फ़ाइल jq और pandas में खुलती है और SQL फ़ाइल PostgreSQL, MySQL और DBeaver में — यानी नतीजा जिसके पास जाएगा, उसे दूसरी सूची में से कोई प्रोग्राम चाहिए होगा।

कौन-सा फ़ॉर्मेट किस काम के लिए है

SQL 1986 से चला आ रहा है, और ISO/IEC 9075 में तय किया गया है। PostgreSQL, MySQL और DBeaver इस फ़ॉर्मेट को पढ़ लेते है।

SQL 1986 में आया और NDJSON 2013 में। किसी को सौंपने के लिए आम तौर पर पुराना वाला ज़्यादा सुरक्षित रहता है; नया वाला वही काम कम बाइट में कर देता है।

NDJSON से SQL: आम सवाल

क्या मेरी NDJSON फ़ाइल कहीं अपलोड होती है?

नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।

क्या NDJSON को SQL में बदलना मुफ़्त है?

हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।

NDJSON को SQL में बदलने पर क्या गुणवत्ता जाती है?

NDJSON और SQL सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। एक के अंदर एक बैठी वस्तुएँ चपटी होकर कॉलम बन जाती हैं। गहराई तक बैठा डेटा अपना आकार खो देता है।

SQL फ़ाइल खोलने के लिए क्या मुझे कुछ इंस्टॉल करना होगा?

कन्वर्ज़न के लिए नहीं: वह उसी ब्राउज़र में होता है जो आपने पहले से खोल रखा है। नतीजा खोलने के लिए उसके बाद वही प्रोग्राम चाहिए जिससे आपका डिवाइस SQL Insert Statements आम तौर पर दिखाता है।

इन फ़ॉर्मेट के बारे में और