मैं सोच रहा था कि क्या कोई मदद कर सकता है।

मेरे पास SQL में सभी क्वेरीज़ हैं (सभी अलग-अलग * .sql फ़ाइलों में)। मैं जानना चाहता था कि क्या इन प्रश्नों को स्वचालित रूप से चलाने का एक तरीका है या उन्हें एक csv या txt फ़ाइल में सहेजने के लिए चलाया जाता है?

इसके अलावा, मैं इन प्रश्नों के भीतर चर ले आया हूं, जिन्हें प्रश्नों को चलाने से पहले साप्ताहिक आधार पर संशोधित करने की आवश्यकता होगी।

धन्यवाद।

के.जे.

क्या आप चर के संबंध में कुछ अतिरिक्त सहायता प्रदान कर सकते हैं? पहले मैं घोषित करूंगा और चर को निम्नानुसार निर्धारित करूंगा:

DATETIME पर @TW_FROM DECLARE

DECTARE @TW_TO डेटाटाइम

SET @TW_FROM = '2015-11-16 00:00:00'; SET @TW_TO = '2015-11-22 23:00:00';

मैं sqlcmd का उपयोग कैसे करूं?

1
Kajan 26 नवम्बर 2015, 16:58

4 जवाब

सबसे बढ़िया उत्तर

हां, आप ऐसा करने के लिए sqlcmd का उपयोग कर सकते हैं।

सबसे पहले - चर। आप चर को निर्दिष्ट करने के लिए जहाँ भी आप $(variablename) का उपयोग कर .sql फ़ाइलों में अपने चर का उल्लेख कर सकते हैं। उदाहरण के लिए,

use $(dbname);
select $(columnname) from table1 where column= '$(var1)'

फिर आप निम्न कमांड के साथ sqlcmd को कॉल करें (तर्क -v चर पर ध्यान दें)

sqlcmd -S servername -d database -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred"

इसे किसी फ़ाइल में आउटपुट करने के लिए, आप अंत में> filename.txt को टैग करते हैं

sqlcmd -S servername -d database -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" > filename.txt

यदि आप एक सीएसवी को आउटपुट करना चाहते हैं, तो आप तर्क -s का उपयोग करके सीमांकक को निर्दिष्ट कर सकते हैं (सर्वर के लिए पूंजी एस के साथ निष्क्रियता पर ध्यान दें)। तो अब हमारे पास है

sqlcmd -S servername -d database -s "," -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" > filename.csv

यदि आप एक ही csv या txt फ़ाइल में कई कमांड आउटपुट करना चाहते हैं, तो>> के बजाय> इसे फ़ाइल की तह नीचे जोड़ने के बजाय> का उपयोग करें।

sqlcmd -S servername -d database -s "," -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" >> filename.csv

इसे कई स्क्रिप्ट्स के लिए चलाने के लिए, आप स्टेटमेंट्स को एक बैच फ़ाइल में रख सकते हैं, और फिर हर हफ्ते वेरिएबल को बदल सकते हैं।

2
BeanFrog 26 नवम्बर 2015, 14:33

आप एक बैच फ़ाइल लिख सकते हैं जो sqlcmd का उपयोग करती है:

MSDN sqlcmd

यह आपको स्क्रिप्ट फ़ाइलों को लूप में कॉल करने और परिणामों को फ़ाइल में आउटपुट करने की अनुमति देगा।

1
strickt01 26 नवम्बर 2015, 14:23

अपने वर्तमान स्क्रैप को संग्रहीत कार्यविधियाँ में कनवर्ट करें । इसके बाद आप अपने चर को पास कर सकते हैं और क्वेरी चला सकते हैं।

यदि आपके पास SQL सर्वर एजेंट उपलब्ध है (SQL मानक या बेहतर) तो आप इसका उपयोग संग्रहीत कार्यविधियों को चलाने के लिए कर सकते हैं।

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

CSV पर निर्यात करने के लिए यह उपयोगी होगा।

1
Alec. 26 नवम्बर 2015, 14:31

यह निर्भर करता है कि आपका SQL सर्वर वास्तव में कहां चल रहा है। अपने इच्छित स्थान पर कुछ भी लिखना काफी मुश्किल हो सकता है।

आप BCP के बारे में पढ़ सकते हैं।

मेरा सुझाव है:

अपने डेटाबेस के भीतर अपने सभी प्रश्नों में से एक यूडीएफ (सर्वोत्तम इनलाइन-यूडीएफ!) बनाएं। EXCEL या किसी अन्य फिटिंग उत्पाद से उन्हें कॉल करें। आप एक एक्सेल सेट करना चाहते हैं जहाँ आपके सभी प्रश्न प्रत्येक शीट पर एक स्वचालित रूप से भरे जाते हैं

1
Shnugo 26 नवम्बर 2015, 14:37