SQLCMD

2010-09-30 14 views
7

में कॉलम विभाजक के रूप में TAB का उपयोग कैसे करें SQLCMD कॉलम विभाजक निर्दिष्ट करने के लिए -s पैरामीटर का समर्थन करता है, लेकिन मुझे यह नहीं पता था कि टैब (CHAR (9)) वर्ण का प्रतिनिधित्व कैसे करें। मैंने निम्नलिखित कोशिश की है लेकिन दोनों काम नहीं करते हैं:SQLCMD

sqlcmd -S ServerName -E -Q"select * from mytable" -s"\t" -o results.txt 
sqlcmd -S ServerName -E -Q"select * from mytable" -s'\t' -o results.txt 

एसक्यूएलसीएमडी में ऐसा करने के लिए कोई विचार क्या है?

उत्तर

7

SQLCMD से अनौपचारिक परिणाम प्राप्त करना मुश्किल है।

आप टैब-सीमांकित आउटपुट फ़ाइल बनाने के लिए चाहते हैं, BCP एक बेहतर शर्त हो सकती है:

bcp "select * from mytable" queryout results.txt -S server -T -c 
14

एक बैच फ़ाइल में, दोहरे उद्धरण चिह्नों के बीच एक टैब डाल काम करता है।

sqlcmd -S ServerName -E -Q"select * from mytable" -s" " -o results.txt 

एक PowerShell फ़ाइल उपयोग में एक ही दोहरे उद्धरण चिह्नों एक भाग निकले टैब के चारों ओर लिपटा

sqlcmd -S ServerName -E -Q"select * from mytable" -s `"`t`" -o results.txt 
+0

महान जवाब देने !!!! दूसरों के लिए PowerShell में ऐसा करने के लिए देख रहे हैं - ध्यान दें कि '-s' के बाद की जगह महत्वपूर्ण है। :) –

2

मैं कई बार कोशिश की है SQLCMD करने के लिए वास्तविक टैब चरित्र पारित करने के लिए भाग निकले ऐसा करने के लिए, और मैं बस इसे लेने के लिए नहीं मिल सकता है। मेरा पसंदीदा काम-टू-टू-डेट एसएससीसीएमडी को एएससीआईआई "यूनिट सेपरेटर" पास करना है, जो हेक्स 0x1F है, और Ctrl-_ टाइप करके कमांड लाइन पर दर्ज किया जा सकता है (नियंत्रण अंडरस्कोर, जो यूएस कीबोर्ड पर ctrl-shift बन जाता है -'- '(' - 'कुंजीपटल की शीर्ष पंक्ति पर' 0 'के बगल में)

' यूनिट सेपरेटर 'का उपयोग करने का लाभ यह है कि किसी के पाठ में उपस्थित होने की संभावना बहुत अधिक है विवरण, और इस उद्देश्य के लिए विशेष रूप से डिजाइन किया गया था (https://en.wikipedia.org/wiki/Delimiter देखें)

करने के लिए है कि मेरे लिए SQLCMD मिला, मैं तो पाइप यह उत्पादन हालांकि एक यूनिक्स शैली कमांड का अनुवाद के रूप में:

tr '\037' '\t' 

\ 037 'यूनिट सेपरेटर' के लिए ऑक्टल है, और \ t टैब वर्ण का प्रतिनिधित्व करता है, 'tr' हमारे लिए इनमें से दोनों का अनुवाद करेगा, हमें हमारी स्क्रिप्ट या गोले में किसी भी उद्धरण युक्तियों पर भरोसा करने की आवश्यकता नहीं है।

विंडोज़ पर 'tr' प्राप्त करने के लिए, आप CoreUtils पैकेज को GnuWin32 से इंस्टॉल कर सकते हैं (http://gnuwin32.sourceforge.net/packages/coreutils.htm देखें) या भारी वजन लें और एक पूर्ण यूनिक्स वातावरण जैसे सिगविन (http://cygwin.com/) इंस्टॉल करें।

एक साथ दो लाना हम पाते हैं:

sqlcmd ... -h-1 -W -k -r1 -s^_ ... | tr '\037' '\t' 

और यह आप टैब के साथ अपने उत्पादन दे देंगे।

ऊपर दिए गए अन्य विकल्पों को देखें, वे SQLCMD से साफ़ आउटपुट प्राप्त करने के लिए आवश्यक हैं (क्रम में; कोई हेडर नहीं, सफेद स्थान को ट्रिम करें, सीआरएलएफ रिक्त स्थान पर, एसटीडीईआरआर में त्रुटियां (आपका आउटपुट नहीं फ़ाइल!) और '^ _' यह है कि यूनिट सेपरेटर कमांड लाइन पर कैसे दिखाई देगा)। आपको "सेट नॉट चालू" भी जोड़ना होगा; आपकी क्वेरी या एसक्यूएल स्क्रिप्ट के लिए, अन्यथा आपको अपने आउटपुट में दिखाई देने वाले एक शानदार संदेश के रूप में पंक्ति-गणना मिल जाएगी!

2

मिले एक अच्छा जवाब यहाँ: SQLCMD outfile as tab delimited text file

  1. ओपन नोटपैड
  2. पेस्ट इस: sqlcmd -S (local) -E -s"<TAB>" -Q "select * from sys.dm_exec_query_stats" -o MyOutput.txt -h-1 -W
  3. हाइलाइट < टैब >, तो Tab दबाएँ कुंजी
  4. वें बचाओ MyBatch.bat
  5. भागो MyBatch.bat
2

एक ऊपर तैनात करने के लिए ऐसा ही एक जवाब है, लेकिन यह एक तरह से मुझे लगता है कि महत्वपूर्ण है में आसान है के रूप में ई फ़ाइल।

  1. अपने पाठ संपादक
  2. प्रेस टैब
  3. हाइलाइट खाली स्थान के (टैब) का हिस्सा बनाया
  4. कॉपी और पेस्ट करें कि आपके एसक्यूएल आदेश में स्थान में खोलें

भले ही इस टैब को व्हाइटस्पेस के विस्तृत हिस्से के रूप में दर्शाया गया हो, यह एक एकल चरित्र है।

दूसरे उत्तर में "<TAB>" के साथ पूरे आदेश को चिपकाने के बारे में कुछ अनावश्यक सामान थे। मुझे लगता है कि लोगों को फेंकता है (यह निश्चित रूप से मुझे फेंक दिया)।

0

प्राप्त करने के लिए इस का उपयोग कर sqlcmd आप टैब वर्ण का उपयोग करने के लिए की तरह तो जरूरत है: \ t इस प्रकार एक उदाहरण क्वेरी एक टैब सीमांकक का उपयोग कर एक पाठ फ़ाइल में एक भी एसक्यूएल डेटाबेस तालिका निर्यात किया जाता है:

sqlcmd -S ServerName -d databaseTableName -Q "SELECT * FROM TABLE_NAME" -o C:\backups\tab_delimiter_bakup.txt -s"\t" 
संबंधित मुद्दे