मैं SQL Server 2008 में .csv फ़ाइल के लिए क्वेरी परिणाम कैसे निर्यात कर सकता हूं?
मैं SQL Server 2008 में .csv फ़ाइल के लिए क्वेरी परिणाम कैसे निर्यात कर सकता हूं?
जवाबों:
यहाँ नीचे उस छवि का पूर्ण स्क्रीन संस्करण है
यह आपके क्वेरी परिणामों को कॉमा-सीमांकित पाठ के रूप में दिखाएगा।
किसी फ़ाइल के क्वेरी के परिणामों को सहेजने के लिए: Ctrl + Shift + F
Ctrl+Shift+F
, तो यह केवल आउटपुट मोड को बदलता है, यह परिणामों को प्रभावित नहीं करता है यदि आप पहले से ही क्वेरी चलाते हैं। इसे प्रतिबिंबित करने के लिए, आपको क्वेरी को फिर से चलाना होगा। जब आप इसे "परिणाम टू फाइल" मोड में चलाते हैं, तो आपको इसके लिए संकेत देना चाहिए कि आप परिणामों को कहाँ सहेजना चाहते हैं।
मुझे पता है कि यह थोड़ा पुराना है, लेकिन यहाँ एक बहुत आसान तरीका है ...
डिफ़ॉल्ट सेटिंग्स के साथ अपनी क्वेरी चलाएँ (ग्रिड प्रारूप में परिणाम डालता है, यदि आपका ग्रिड प्रारूप में नहीं है, तो नीचे देखें)
ग्रिड परिणामों पर राइट क्लिक करें और "परिणाम सहेजें" पर क्लिक करें और इसे सहेजें।
यदि आपके परिणाम ग्रिड प्रारूप में नहीं हैं, तो जहाँ आप प्रश्न लिखते हैं, वहाँ "राइट टू रिजल्ट" लिखें पर क्लिक करें और "परिणाम टू ग्रिड" पर क्लिक करें
ध्यान रखें कि आप कॉलम हेडर पर कब्जा नहीं करते हैं!
शुभ लाभ!
आप PowerShell का उपयोग कर सकते हैं
$AttachmentPath = "CV File location"
$QueryFmt= "Query"
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
Add-PSSnapin SqlServerCmdletSnapin100
और Add-PSSnapin SqlServerProviderSnapin100
।
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
आवश्यकता थी : (लेकिन उन सिमलेट्स में स्नैप करने की आवश्यकता नहीं थी)। इसके अलावा, मैं कमांड को एक स्क्रिप्ट में सहेजता हूं, जो तब तक नहीं चलेगा जब तक मैं निष्पादन नीति को नहीं बदलूंगा Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
:।
RemoteSigned
निष्पादन नीति पर्याप्त होगी।
यदि प्रश्न में डेटाबेस स्थानीय है, तो संभवतः CSV फ़ाइल के लिए क्वेरी परिणाम निर्यात करने का सबसे मजबूत तरीका है (यानी, आपको सबसे अधिक नियंत्रण देना)।
इस प्रक्रिया से थकने के बाद, मुझे निम्नलिखित में से एक सबसे अच्छा विकल्प लगा
पॉवरशेल स्क्रिप्ट
$dbname = "**YOUR_DB_NAME_WITHOUT_STARS**"
$AttachmentPath = "c:\\export.csv"
$QueryFmt= @"
**YOUR_QUERY_WITHOUT_STARS**
"@
Invoke-Sqlcmd -ServerInstance **SERVER_NAME_WITHOUT_STARS** -Database $dbname -Query $QueryFmt | Export-CSV $AttachmentPath -NoTypeInformation
व्यवस्थापक के रूप में PowerShell चलाएँ
& "c:\path_to_your_ps1_file.ps1"
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
NS के उत्तर पर बिल्डिंग, मेरे पास एक PowerShell स्क्रिप्ट है जो CSV फ़ाइल को फ़ील्ड के चारों ओर उद्धरण चिह्नों के साथ निर्यात करती है और अल्पविराम से अलग हो जाती है और यह फ़ाइल में शीर्ष लेख की जानकारी को छोड़ देती है।
add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100
$qry = @"
Select
*
From
tablename
"@
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $qry | convertto-CSV -notype | select -skip 1 > "full path and filename.csv"
पहली दो पंक्तियाँ Invoke-SqlCmd कमांड-लेट का उपयोग करने की क्षमता को सक्षम करती हैं ।
T-SQL का उपयोग करें :
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
लेकिन, कुछ जोड़े हैं:
आपको Microsoft.ACE.OLEDB.12.0 प्रदाता उपलब्ध होना चाहिए। जेट 4.0 प्रदाता भी काम करेगा, लेकिन यह प्राचीन है, इसलिए मैंने इसके बजाय इसका उपयोग किया।
.CSV फ़ाइल को पहले से मौजूद होना चाहिए। यदि आप हेडर ( HDR=YES
) का उपयोग कर रहे हैं , तो सुनिश्चित करें कि .CSV फ़ाइल की पहली पंक्ति सभी फ़ील्ड की सीमांकित सूची है।
CSV को निर्यात करने के लिए मूल SQL सर्वर प्रबंधन स्टूडियो तकनीक का उपयोग करना (जैसा कि @ 8kb का सुझाव दिया गया है) यदि आपके मानों में अल्पविराम नहीं है, तो काम नहीं करता है, क्योंकि SSMS दोहरे उद्धरण चिह्नों में मानों को लपेटता नहीं है। मेरे लिए काम करने का एक अधिक मजबूत तरीका केवल परिणामों की प्रतिलिपि बनाना है (ग्रिड के अंदर क्लिक करें और फिर CTRL-A, CTRL-C) और इसे एक्सेल में पेस्ट करें। फिर एक्सेल से CSV फ़ाइल के रूप में सहेजें।
आप QueryToDoc ( http://www.querytodoc.com ) का उपयोग कर सकते हैं । यह आपको SQL डेटाबेस के खिलाफ एक क्वेरी लिखने और परिणामों को निर्यात करने देता है - आपके द्वारा सीमांकन करने के बाद - एक्सेल, वर्ड, एचटीएमएल या वीवीवी के लिए
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
जैसा कि @Slogmeister एक्सट्राऑर्डिनेयर कोटेड सही है।
कॉलम 1 के साथ 1> फ़ाइल पहले से मौजूद होनी चाहिए> कार्यालय स्थापित होने के लिए एक की आवश्यकता है
त्रुटियों का सामना करना पड़ा
Msg 7303, स्तर 16, राज्य 1, पंक्ति 1 OLE DB प्रदाता "Microsoft.ACE.OLEDB.12.0" के डेटा स्रोत ऑब्जेक्ट को "लिंक किए गए सर्वर" (नल) के लिए प्रारंभ नहीं कर सकता है।
Msg 15281, स्तर 16, राज्य 1, लाइन 1 SQL सर्वर ने घटक 'Ad Hoc Distributed Queries' के STATEMENT 'OpenRowset / OpenDatasource' तक पहुंच को अवरुद्ध कर दिया क्योंकि यह घटक इस सर्वर के सुरक्षा कॉन्फ़िगरेशन के भाग के रूप में बंद है। एक सिस्टम व्यवस्थापक sp_configure का उपयोग करके 'Ad Hoc Distributed Queries' के उपयोग को सक्षम कर सकता है। 'एड हॉक डिस्ट्रीब्यूटेड क्वैरिज' को सक्षम करने के बारे में अधिक जानकारी के लिए, SQL सर्वर बुक्स ऑनलाइन में 'एड हॉक डिस्ट्रिब्यूटेड क्वैरिज' खोजें।
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO
यदि आप Powershell का उपयोग नहीं करना चाहते हैं, तो यह उत्तर 8kb के महान उत्तर पर भिन्नता है। एकमात्र अंतर यह है कि आउटपुट प्रारूप के रूप में सीएसवी का चयन करने के बजाय, टैब डिलीटेड का चयन करें। इस तरह अगर आपके डेटा में कॉमा हैं, तो यह एक्सेल में कोशिकाओं को नहीं छोड़ेगा। साथ ही, यदि आपके पास Excel का डिफ़ॉल्ट सीमांकित टैब पर सेट है, तो आप बस SSMS क्वेरी परिणामों (CTRL-A, CTRL-C) की प्रतिलिपि बना सकते हैं और Excel में पेस्ट कर सकते हैं (फ़ाइल के रूप में सहेजने और Excel में आयात करने की आवश्यकता नहीं है) ):
अब आप अपनी क्वेरी को निष्पादित कर सकते हैं, फिर सभी परिणामों का चयन करने के लिए एक CTRL-A करें, फिर CTRL-C को क्लिपबोर्ड पर कॉपी करें, फिर Excel 2013 पर स्विच करें (2007 में भी काम कर सकते हैं, सुनिश्चित नहीं हैं) और पेस्ट करें - एक्सेल की डिफ़ॉल्ट मान सीमांकक टैब पर सेट है।
हां, ये सब तब संभव है जब आपके पास सर्वरों की सीधी पहुंच हो। लेकिन क्या होगा यदि आपके पास केवल वेब / एप्लिकेशन सर्वर से सर्वर तक पहुंच है? खैर, यह स्थिति हमारे साथ बहुत पहले थी और समाधान SQL सर्वर निर्यात CSV के लिए था ।