आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
SQL
एक तालिका, INSERT कमांड में बदली हुई, डेटाबेस में लादने के लिए तैयार।
SQL
SQL एक सादा टेक्स्ट फ़ॉर्मेट है, जो किसी भी एडिटर में खुल जाता है। इसका इस्तेमाल प्रोग्रामों के बीच डेटा ले जाना और सहेजना के लिए होता है।
एक्सटेंशन .sql है और पूरा नाम SQL Insert Statements। दोनों उतना नहीं बताते जितना यह कि फ़ाइल अंदर क्या-क्या रख सकती है — और इस पन्ने का बाक़ी हिस्सा इसी के बारे में है।
यह 1986 तक पीछे जाता है। विनिर्देश ISO/IEC 9075 है।
जो फ़ॉर्मेट इतने लंबे समय तक पढ़ा जाता रहा हो, उसे वह चीज़ सौंपी जा सकती है जो आपको दस साल बाद वापस चाहिए।
यह पूरा प्रकाशित है, इसलिए कोई भी इसे देखकर अंदाज़ा लगाने के बजाय दस्तावेज़ पढ़कर लागू कर सकता है। यही वजह है कि यह फ़ॉर्मेट इतने सारे प्रोग्रामों में मिलता है, और यही वजह है कि बीस साल पहले लिखी गई फ़ाइलें आज भी खुल जाती हैं। पर विनिर्देश का प्रकाशित होना और उसका रॉयल्टी-मुक्त होना एक बात नहीं है: जहाँ फ़ॉर्मेट किसी कोडेक को अपने अंदर लपेटता है, वहाँ पेटेंट का लाइसेंस एक अलग सवाल है, और मानक उसका जवाब नहीं देता।
SQL फ़ाइल में टिप्पणी लिखने का तरीक़ा मौजूद है — और यही उस फ़ाइल में, जिसे कोई इंसान सँभालता है, और उसमें, जिसे कोई प्रोग्राम लिखता है, फ़र्क़ करता है। बिना टिप्पणी वाले फ़ॉर्मेट में बदलते समय सबसे पहले यही जाती हैं, और चेतावनी कोई नहीं देता।
PostgreSQL, MySQL और DBeaver इसे पढ़ते हैं, और इसी तरह के ज़्यादातर दूसरे प्रोग्राम भी।
फ़ाइल न खुले तो कसूर फ़ॉर्मेट का शायद ही कभी होता है — अक्सर प्रोग्राम ही फ़ॉर्मेट से पुराना होता है। किसी पुरानी चीज़ में बदल लेना इससे निकलने का भरोसेमंद रास्ता है, और इस वेबसाइट का बाक़ी हिस्सा इसी के लिए है।
इसे कोई भी ब्राउज़र नहीं पढ़ता।
इसे बदलने की सबसे आम वजह यही है: फ़ॉर्मेट ख़राब है, ऐसा नहीं — बात यह है कि जहाँ आप फ़ाइल दिखाना चाहते हैं वह जगह उसे पढ़ ही नहीं सकती।
SQL इसलिए बना है कि इसे खोला और बदला जाए। जब तक काम चल रहा है फ़ाइल इसी फ़ॉर्मेट में रखिए, और जब भी बनी हुई प्रति चाहिए हो, इसी से निर्यात कीजिए।
SQL 1986 से मानकीकृत क्वेरी भाषा है। .sql फ़ाइल उसके statement रखने वाली टेक्स्ट फ़ाइल है, और यही पूरा फ़ॉर्मेट है — कोई हेडर नहीं, कोई संरचना नहीं। यह टेबल बना सकती है, दस लाख पंक्तियाँ डाल सकती है, स्कीमा बदल सकती है, या बस तीन क्वेरी रख सकती है।
व्यवहार में जो फ़ाइलें लोग बदलते हैं वे दो समूहों में आती हैं। dump वह है जो डेटाबेस या टेबल को statement के रूप में दोबारा लिखता है ताकि कहीं और वह बन सके। migration वह स्क्रिप्ट है जो नियंत्रित तरीक़े से स्कीमा बदलती है।
आमतौर पर क्रम में तीन चीज़ें। टेबल मौजूद होने पर उसे हटाने वाला statement, यही वजह है कि लाइव डेटाबेस पर dump चलाना पलटा न जा सकने वाली क्रिया है। CREATE TABLE statement जो कॉलम और उनके प्रकार परिभाषित करता है। फिर पंक्तियाँ, INSERT statement के रूप में।
इनके इर्द-गिर्द असली dump घर-गृहस्थी के काम जोड़ता है: कैरेक्टर-सेट घोषणाएँ, डेटा लोड होते वक़्त इंडेक्स दोबारा-बनना रोकने वाली सेटिंग, और transaction रैपर। यह घर-गृहस्थी डेटाबेस-ख़ास होती है, और यही मुख्य वजह है कि एक डेटाबेस का dump दूसरे में नहीं लोड होता।
मानक एक कोर तय करता है, और हर डेटाबेस उसे बढ़ाता है। पहचानकर्ता उद्धरण अलग है — MySQL में backtick, PostgreSQL में दोहरा उद्धरण, SQL Server में square bracket। ऑटो-बढ़ती कुंजियाँ तीन अलग-अलग तरीक़ों से लिखी जाती हैं।
तो MySQL dump PostgreSQL में लोड नहीं होता, और आमतौर पर एरर चौथी लाइन पर सिंटैक्स की शिकायत होती है। दो बोलियों के बीच बदलना असली काम है और ज़्यादातर यांत्रिक; अगर आप स्कीमा नहीं, डेटा हिला रहे हैं, तो CSV से गुज़रना अक्सर SQL अनुवाद करने से तेज़ और ज़्यादा भरोसेमंद है।
कमांड लाइन पर हर डेटाबेस का अपना क्लाइंट है और आह्वान छोटा है: PostgreSQL के लिए psql, MySQL और MariaDB के लिए mysql क्लाइंट, SQLite के लिए sqlite3, सब फ़ाइल को इनपुट की तरह लेते हैं। बड़े dump के लिए यह सबसे तेज़ रास्ता है।
इसे चलाने से पहले दो काम कीजिए। फ़ाइल का ऊपरी हिस्सा पढ़िए कि यह कुछ हटा तो नहीं रहा। और अगर dump ख़ुद गंतव्य डेटाबेस नहीं बनाता, तो पहले इसे बना लीजिए।
आमतौर पर चार में से एक। बड़े batched INSERT से टकराने वाली पैकेट या statement आकार सीमा — सर्वर की सीमा, फ़ाइल की नहीं। ग्राफ़िकल क्लाइंट का टाइमआउट। कैरेक्टर-सेट बेमेल, जो एरर की जगह बिगड़ा पाठ दिखाता है। या ऐसी foreign key शर्त जो अपनी संदर्भित टेबल से पहले आई पंक्तियाँ ठुकरा देती है।
आख़िरी वजह सबसे आम और सबसे कम साफ़ है। Dump आमतौर पर लोड के इर्द-गिर्द constraint जाँच बंद करके इसे सँभालते हैं, और हाथ से संपादित dump वह सुरक्षा खो देता है। निर्भरता क्रम में लोड करना सुधार है।
dump डेटाबेस दोबारा बनाने के लिए है। अगर चाहिए सिर्फ़ डेटा है — विश्लेषण के लिए, स्प्रेडशीट में, बिना डेटाबेस वाले किसी को — CSV बेहतर कंटेनर है, और बड़े होने पर Parquet उससे भी बेहतर।
उलटा भी जानने लायक़ है। स्प्रेडशीट को INSERT statement में बदलना उस हालत में टेबल डेटाबेस में डालने का मानक तरीक़ा है जहाँ सीधा कनेक्शन नहीं — प्रबंधित होस्टिंग में आम हालत: कोई पोर्ट खुला नहीं, पर फ़ाइल पेस्ट करके चलाने वाला क्वेरी कंसोल है।
यह पाठ है, इसलिए कोई भी एडिटर खोलता है। SQL वाक्य-रचना समझने वाला एडिटर चलाने वाली किसी भी चीज़ के लिए काम आता है, क्योंकि यह statement रंगेगा और असंतुलित उद्धरण डेटाबेस से पहले दिखा देगा।
dump बहुत बड़ा हो सकता है, और कई-गीगाबाइट वाली फ़ाइल जाँचने का समझदार तरीक़ा है पहली और आख़िरी कुछ दर्जन लाइन देखना, पूरा खोलने के बजाय। पहली लाइनें बोली और कैरेक्टर सेट बताती हैं; आख़िरी बताती हैं dump पूरा हुआ या नहीं।
| एक्सटेंशन | .sql |
|---|---|
| मीडिया टाइप | application/sql |
| पहली बार प्रकाशित | 1986 |
| विनिर्देश | ISO/IEC 9075 |
कोई भी टेक्स्ट एडिटर इसे खोलता है, क्योंकि यह सादा पाठ है। SQL वाक्य-रचना समझने वाला एडिटर या डेटाबेस औज़ार चलाने वाली किसी भी चीज़ के लिए बेहतर है, क्योंकि यह statement हाइलाइट करेगा।
डेटाबेस के अपने कमांड-लाइन क्लाइंट का इस्तेमाल कीजिए, फ़ाइल को इनपुट की तरह — PostgreSQL के लिए psql, MySQL और MariaDB के लिए mysql क्लाइंट, SQLite के लिए sqlite3। बड़ी फ़ाइलों के लिए यह ग्राफ़िकल औज़ार से काफ़ी तेज़ और भरोसेमंद है।
लगभग निश्चित रूप से नहीं। पहचानकर्ता उद्धरण, ऑटो-इंक्रीमेंट वाक्य-रचना, प्रकार नाम और फ़ंक्शन नाम सब अलग हैं, इसलिए लोड आमतौर पर कुछ लाइनों में असफल हो जाता है। डेटा हिला रहे हों तो CSV में निर्यात करना आमतौर पर तेज़ है।
आम वजहें हैं बड़े batched INSERT से टकराती statement-आकार सीमा, ग्राफ़िकल क्लाइंट का टाइमआउट, या ऐसी foreign key शर्त जो अपनी संदर्भित टेबल से पहले आई पंक्तियाँ ठुकरा देती है।
नहीं। यह एक बनाने के निर्देशों का सेट है। डेटाबेस वह है जो फ़ाइल चलने के बाद मौजूद होता है — फ़ाइल ख़ुद पाठ है जिसे कोई भी एडिटर पढ़ सकता है और जो कुछ नहीं करती जब तक कुछ इसे चलाए नहीं।
CSV अगर गंतव्य स्प्रेडशीट, विश्लेषण औज़ार या अलग डेटाबेस इंजन है। SQL dump अगर आप कहीं और वही डेटाबेस दोबारा बना रहे हैं और स्कीमा, प्रकार, कुंजियाँ व इंडेक्स साथ चाहिए।