एक्सेल वर्कशीट से एसक्यूएल इंसर्ट स्क्रिप्ट जनरेट करें


107

मेरे पास एक बड़ी एक्सेल वर्कशीट है जिसे मैं अपने डेटाबेस में जोड़ना चाहता हूं।

क्या मैं इस एक्सेल वर्कशीट से SQL इंसर्ट स्क्रिप्ट उत्पन्न कर सकता हूँ?


2
मैं दोनों के लिए एसक्यूएल स्क्रिप्ट प्राप्त करने के लिए एक सरल उपकरण बनाया insertऔर update यहीं
पत्रोस

SQL कमांड उत्पन्न करने के लिए आप मेरे VBA मैक्रो का भी उपयोग कर सकते हैं। यहाँ और अधिक: stackoverflow.com/questions/1570387/…
पेट्रिक

जवाबों:


202

मुझे लगता है कि उल्लिखित विधियों में से किसी एक का उपयोग करके आयात करना आदर्श है यदि यह वास्तव में एक बड़ी फाइल है, लेकिन आप एक्स् ट स्टेटमेंट बनाने के लिए एक्सेल का उपयोग कर सकते हैं:

="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"

MS SQL में आप उपयोग कर सकते हैं:

SET NOCOUNT ON

सभी '1 पंक्ति प्रभावित' टिप्पणियों को दर्शाने के लिए। और यदि आप बहुत सारी पंक्तियाँ कर रहे हैं और यह गलत हो गया है, तो एक बार में एक बार स्टेटमेंट्स के बीच एक GO डालें


3
मैं उपयोग कर रहा था =CONCATENATE()लेकिन &साइन का उपयोग करने से बहुत बेहतर पठनीयता हो जाती है!
मस्ताज़ी

1
@ मस्तजी राजी हो गए! &जब मैं CONCATENATE()थोड़ी देर पहले पैरामीटर सीमा में टकराया तो मैं स्विच कर गया, यह अब एक सामान्य समस्या नहीं है कि सीमा 255 पैरामीटर है, लेकिन मैं कभी भी पलट जाने के बारे में नहीं सोचता।
हार्ट सीओ

1
CONCATENATE () जाने का रास्ता है। आपने जो दर्ज किया है, उसे देखने के लिए फॉर्मूला बार पर fx आइकन पर क्लिक करें। यह सिर्फ उपयोग और संकेत की तुलना में बहुत क्लीनर है। बेशक उपयोग करना और हस्ताक्षर करना अच्छा है, लेकिन कभी-कभी जब आपके पास दोहरे उद्धरण या एकल उद्धरण होते हैं, तो यह आपको हमेशा के लिए याद दिलाएगा कि क्या गायब है।
ian0411 19

1
कोशिकाओं में उद्धरण होने पर काम नहीं करता है। एक सही संस्करण के लिए मेरे उत्तर की जाँच करें।
साइमन बार्स

2
@PreshanPradeepa आप एक ही सिंटैक्स का उपयोग कर सकते हैं, SQL सर्वर परवाह नहीं करता है कि जब तक यह एक मान्य पूर्णांक है तब तक पूर्णांक उद्धरणों में है।
हार्ट सीओ

29

एक आसान उपकरण है जो बहुत समय बचाता है

http://tools.perceptus.ca/text-wiz.php?ops=7

आपको बस तालिका नाम, फ़ील्ड नाम और डेटा - टैब को अलग करना होगा और गो को हिट करना होगा!


7
अपना संवेदनशील डेटा वेब पर पोस्ट न करें। आपके पास यह जानने का कोई तरीका नहीं है कि आपके द्वारा वेब एप्लिकेशन पर सबमिट किए गए डेटा का क्या होगा। इनमें से कुछ उपकरण आपके डेटा को संग्रहीत करते हैं और इसे सार्वजनिक रूप से उपलब्ध
कराते हैं

28

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

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


हैंडी। मैं देखता हूं कि एक पहचान कॉलम के साथ, कॉपी बफर को कॉलम की आवश्यकता होती है, भले ही इसमें डेटा को नजरअंदाज कर दिया जाए क्योंकि मान स्वचालित रूप से डाले जाते हैं क्योंकि पंक्तियाँ डाली जाती हैं।
फोर्टबाइज

आप कॉलम सूची में अपनी पहचान कॉलम को अंतिम बना सकते हैं और फिर अतिरिक्त कॉलम रखना आवश्यक नहीं होगा।
एंड्री मोरोज़ोव

1
यदि आप एक्सेल शीट में पहचान की शर्तों को निर्दिष्ट नहीं करते हैं; IDENTITY कॉलम को हटाकर आप संपादित 200 शीर्ष पंक्तियों sql स्क्रिप्ट को बदल सकते हैं और फिर से चला सकते हैं। इसलिए जब आप पहचान के बिना मूल्यों को कॉपी और पेस्ट करते हैं; यह तरीका काम करेगा।
aozan88

यह किसी और के लिए Excel में दिनांक और समय फ़ील्ड के लिए टूट गया है जो समस्या में चलता है। डेटाटाइम डेटा किसी कारण से SQL साइड पर "बाइनरी" डेटा में परिवर्तित हो जाता है।
केविन वास्को

1
@ कोंडायसॉल्ज़वर्डे मैं आपको अपना उत्तर पोस्ट करने की सलाह दूंगा। इस उत्तर को संपादित करने के मामले में आपके परिवर्तन संभवत: सामुदायिक मध्यस्थों द्वारा अस्वीकार कर दिए जाएंगे।
एंड्री मोरोज़ोव

16

आप निम्नलिखित एक्सेल स्टेटमेंट का उपयोग कर सकते हैं:

="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"

यह हार्ट CO के उत्तर से बेहतर है क्योंकि यह कॉलम के नामों को ध्यान में रखता है और कॉलम में उद्धरणों के कारण संकलित त्रुटियों से छुटकारा दिलाता है। अंतिम कॉलम बिना उद्धरण के एक संख्यात्मक मान स्तंभ का एक उदाहरण है।


1
अच्छा कार्य। Googleशीट में मुझे कॉलम नाम के संदर्भ के आसपास `(कब्र / बैकटिक) को हटाना था।
गुप्तवती

5

डेटाबेस के आधार पर, आप CSV को निर्यात कर सकते हैं और फिर आयात विधि का उपयोग कर सकते हैं।

माई एसक्यूएल - http://dev.mysql.com/doc/refman/5.1/en/load-data.html

PostgreSQL - http://www.postgresql.org/docs/8.2/static/sql-copy.html


3
MS SQL, आप Excel फ़ाइल को आयात करने के लिए SSMS के आयात विज़ार्ड का उपयोग कर सकते हैं।
हार्ट सीओ

1
@HartCO में विवरण जोड़ने के लिए - डेटाबेस पर SSMS आयात विज़ार्ड राइट-क्लिक करने के लिए, कार्यों पर होवर करें, संदर्भ मेनू के निचले भाग के पास "आयात डेटा ..." पर क्लिक करें। विज़ार्ड में चरणों का पालन करें।
qxotk

2

आप कुछ लिखने के लिए VB का उपयोग कर सकते हैं जो कि आपके डेटा के आसपास उपयुक्त sql स्टेटमेंट में जोड़कर एक फ़ाइल पंक्ति में आउटपुट करेगा। मैंने पहले भी ऐसा किया है।


1

यहाँ एक और उपकरण है जो बहुत अच्छी तरह से काम करता है ...

http://www.convertcsv.com/csv-to-sql.htm

यह टैब अलग मूल्यों को ले सकता है और एक INSERT स्क्रिप्ट उत्पन्न कर सकता है। बस कॉपी और पेस्ट करें और विकल्पों में चरण 2 के तहत चेक बॉक्स "पहली पंक्ति कॉलम नाम है"

फिर नीचे स्क्रॉल करें और चरण 3 के तहत, बॉक्स में अपना टेबल नाम दर्ज करें "स्कीमा। टेबल या नाम देखें:"

हटाने पर ध्यान दें और साथ ही टेबल चेक बॉक्स बनाएं, और सुनिश्चित करें कि आप इसे चलाने से पहले उत्पन्न स्क्रिप्ट की जांच करें।

यह मेरे द्वारा पाया गया सबसे तेज और सबसे विश्वसनीय तरीका है।


1

PowerShell गैलरी में ImportExcelConvertFrom-ExcelToSQLInsert से उपयोग करें

NAME
    ConvertFrom-ExcelToSQLInsert
SYNTAX
    ConvertFrom-ExcelToSQLInsert [-TableName] <Object> [-Path] <Object> 
      [[-WorkSheetname] <Object>] [[-HeaderRow] <int>] 
      [[-Header] <string[]>] [-NoHeader] [-DataOnly]  [<CommonParameters>]
PARAMETERS
    -DataOnly
    -Header <string[]>
    -HeaderRow <int>
    -NoHeader
    -Path <Object>
    -TableName <Object>
    -WorkSheetname <Object>
    <CommonParameters>
        This cmdlet supports the common parameters: Verbose, Debug,
        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
        OutBuffer, PipelineVariable, and OutVariable. For more information, see
        about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
ALIASES
    None
REMARKS
    None


0

यह क्वेरी मैंने डेटाबेस में एक्सेल फाइल डेटा डालने के लिए उत्पन्न की है। इस आईडी और मूल्य में संख्यात्मक मान और दिनांक फ़ील्ड भी हैं। इस क्वेरी ने सभी प्रकारों को संक्षेप में प्रस्तुत किया है जिनकी मुझे आवश्यकता है यह आपके लिए भी उपयोगी हो सकता है

="insert into  product (product_id,name,date,price) values("&A1&",'" &B1& "','" &C1& "'," &D1& ");"


    Id    Name           Date           price 
    7   Product 7   2017-01-05 15:28:37 200
    8   Product 8   2017-01-05 15:28:37 40
    9   Product 9   2017-01-05 15:32:31 500
    10  Product 10  2017-01-05 15:32:31 30
    11  Product 11  2017-01-05 15:32:31 99
    12  Product 12  2017-01-05 15:32:31 25

0

आप एक्सेल शीट का उपयोग करके सम्मिलित स्क्रिप्ट उत्पन्न करने के लिए नीचे C # विधि का उपयोग कर सकते हैं, बस आपको विधि निष्पादित करने से पहले NuGet पैकेज मैनेजर से OfficeOpenXml पैकेज आयात करने की आवश्यकता है।

public string GenerateSQLInsertScripts() {

        var outputQuery = new StringBuilder();
        var tableName = "Your Table Name";
        if (file != null)
        {
            var filePath = @"D:\FileName.xsls";

            using (OfficeOpenXml.ExcelPackage xlPackage = new OfficeOpenXml.ExcelPackage(new FileInfo(filePath)))
            {
                var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select the first sheet here
                var totalRows = myWorksheet.Dimension.End.Row;
                var totalColumns = myWorksheet.Dimension.End.Column;

                var columns = new StringBuilder(); //this is your columns

                var columnRows = myWorksheet.Cells[1, 1, 1, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());

                columns.Append("INSERT INTO["+ tableName +"] (");
                foreach (var colrow in columnRows)
                {
                    columns.Append("[");
                    columns.Append(colrow);
                    columns.Append("]");
                    columns.Append(",");
                }
                columns.Length--;
                columns.Append(") VALUES (");
                for (int rowNum = 2; rowNum <= totalRows; rowNum++) //selet starting row here
                {
                    var dataRows = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());

                    var finalQuery = new StringBuilder(); 
                    finalQuery.Append(columns);

                    foreach (var dataRow in dataRows)
                    {
                        finalQuery.Append("'");
                        finalQuery.Append(dataRow);
                        finalQuery.Append("'");
                        finalQuery.Append(",");
                    }
                    finalQuery.Length--;

                    finalQuery.Append(");");

                    outputQuery.Append(finalQuery);

                  }

            }
        }

return outputQuery.ToString();}

0

मुझे अक्सर एसक्यूएल स्क्रिप्ट्स बनानी पड़ती थीं और उन्हें सोर्स कंट्रोल में जोड़कर डीबीए में भेजना पड़ता था। मैंने इस ExcelIntoSQL ऐप को विंडोज़ स्टोर https://www.microsoft.com/store/apps/9NH0W51XXQRM से उपयोग किया है। यह "CREATE TABLE" और INSERTS के साथ पूरी स्क्रिप्ट बनाता है।


0

मेरे पास एसक्यूएल आवेषण उत्पन्न करने के लिए एक विश्वसनीय तरीका है, और आप प्रसंस्करण में आंशिक मापदंडों को संशोधित कर सकते हैं। यह मुझे अपने काम में बहुत मदद करता है, उदाहरण के लिए, असंगत संरचना और फ़ील्ड काउंट के साथ डेटाबेस में एक सैकड़ों डेटा की प्रतिलिपि बनाएँ। IntellIJ DataGrip , शक्तिशाली उपकरण जिसका मैं उपयोग करता हूं। DG, कॉलम या लाइन द्वारा डब्ल्यूपीएस ऑफिस या एमएस एक्सेल से डेटा प्राप्त कर सकते हैं। कॉपी करने के बाद, DG SQL आवेषण के रूप में डेटा निर्यात कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.