15

मैं पहले से ही तालिका बनाने के बिना SQL सर्वर में CSV फ़ाइलों को आयात करने के लिए त्वरित और गंदे तरीके की तलाश कर रहा हूं और इसके कॉलम को परिभाषित करता हूं।सीएसवी आयात ऑपरेशन के हिस्से के रूप में एक ही चरण में एक तालिका को कैसे बनाएं और पॉप्युलेट करें?

प्रत्येक आयातित सीएसवी अपनी तालिका में आयात किया जाएगा।

हम डेटा-प्रकार के संदर्भ के बारे में चिंतित नहीं हैं। सीएसवी संरचना और लेआउट में भिन्न होता है, और उनमें से सभी में कई कॉलम होते हैं, फिर भी हम उनमें से कुछ के साथ चिंतित हैं: सड़क के पते और ज़िपकोड। हम बस एसएसवी डेटा को SQL डेटाबेस में जल्दी से प्राप्त करना चाहते हैं और प्रासंगिक कॉलम निकालें।

मैं फील्ड टर्मिनेटर और रोटार्मिनेटर की आपूर्ति करना चाहता हूं, इसे सीएसवी पर इंगित करें, और उपयोगिता बाकी को करें। क्या टेबल बनाने और इसे पॉप्युलेट करने का कोई तरीका है, सभी एक ही चरण में, बल्क इंसर्ट और/या ओपनरोसेट (बल्क ...) का उपयोग करके?

+0

एसक्यूएल सर्वर के किन संस्करणों? –

+0

एसक्यूएल सर्वर 2000 – Tim

उत्तर

11

Referencing SQLServerPedia, मुझे लगता है कि यह काम करेगा:

sp_configure 'show advanced options', 1; 
RECONFIGURE; 
GO 
sp_configure 'Ad Hoc Distributed Queries', 1; 
RECONFIGURE; 
GO 

select TerritoryID 
     ,TotalSales 
     ,TotalCost 
INTO CSVImportTable 
from openrowset('MSDASQL' 
       ,'Driver={Microsoft Access Text Driver (*.txt, *.csv)}' 
       ,'select * from C:\csvtest.CSV') 
+0

धन्यवाद। मुझे माइक्रोसॉफ्ट एक्सेस टेक्स्ट ड्राइवर के बजाय माइक्रोसॉफ्ट टेक्स्ट ड्राइवर का उपयोग करना पड़ा, लेकिन आयात काम किया। हालांकि मुझे यह त्रुटि संदेश मिला (हालांकि आयात इसके बावजूद काम करता था): संदेश 15123, स्तर 16, राज्य 1, प्रक्रिया sp_configure, रेखा 79 कॉन्फ़िगरेशन विकल्प 'विज्ञापन हॉक वितरित क्वेरीज़' मौजूद नहीं है, या यह एक उन्नत हो सकता है विकल्प। – Tim

+0

विज्ञापन-होक विकल्प को कॉन्फ़िगर करने से पहले आपको उन्नत विकल्पों के लिए 'RECONFIGURE' चलाना होगा। पहले रिकॉन्फिगर के बाद एक और गो होना चाहिए। मैं फिर से संपादित करूंगा। – TyT

5

कष्टप्रद, मैं प्रतिनिधि अंक अभी तक सिर्फ टिप्पणी करने की जरूरत नहीं है, इसलिए मैं TYT के आधार पर एक जवाब जोड़ देंगे (कि हैंडल में भयानक लग रहा है स्वामित्व, बीटीडब्ल्यू ...)

कार्यकर्ता कोड को "फ़ाइल नहीं मिली" त्रुटि से बचने के लिए मेरे लिए एक एकल की बजाय डबल \ \ की आवश्यकता होती है। और आपको फ़ील्ड निर्दिष्ट करने की आवश्यकता नहीं है; उन्हें फ़ाइल की पहली पंक्ति से अनुमानित किया जाएगा:

select * 
into CsvImportTable 
from openrowset(
      'MSDASQL', 
      'Driver={Microsoft Access Text Driver (*.txt, *.csv)}', 
      'select * from C:\\csvtestfile.csv') 

मुझे एक्सेस ड्राइवर के साथ कोई समस्या नहीं थी।

अद्यतन: यदि आपको गलत तरीके से अनुमानित प्रकारों में परेशानी है, तो फ़ाइल के शीर्ष पर कुछ पंक्तियों को तालिका में इच्छित प्रकार के डेटा के साथ डालें ताकि आप टेक्स्ट कह सकें- टेक्स्ट के बजाय VARCHAR- > आयात करें और फिर आयात के बाद उन पंक्तियों को हटा दें।

अंतिम टुकड़े के रूप में, मेज पर एक पी जोड़ें ताकि आप डेटा में हेरफेर कर सकते हैं - डमी पंक्तियां हटाना, आदि:

alter table CsvImportTable add Id int identity(1, 1) 
+1

इसके लिए क्या मूल्य है, अपनी प्रोफ़ाइल में विवरण जोड़ना। आपके प्रतिनिधि अंक बढ़ते हैं। –

संबंधित मुद्दे