मैं फ़ाइल निर्देशिका को पढ़ने के लिए xp_cmdshell का उपयोग करने का प्रयास कर रहा हूं, फिर उन फ़ाइल नामों को लॉग तालिका में पेस्ट करें। हर बार जब मैं निर्देशिका पढ़ता हूं तो मैं लॉग टेबल में नई फाइल जोड़ना चाहता हूं। मेरे पास अभी जो है वह नीचे है लेकिन यह गन्दा है।
Declare @FileName Table(FileList Varchar(255))
Insert Into @FileName
EXEC XP_CMDSHELL 'dir "C:\Data Log\EODFiles\*.CSV" /b'
Declare @FilePath Varchar(255)
Select Top 1 FilePath= FileList
FROM [dbo].[EOD_Log]
right join @FileName
on filelist = File_log
where filelist is NOT NULL and File_log is NULL
Insert Into [dbo].[EOD_Log] (File_log)
select @filepath from @FileName where @filepath is not NULL
2 जवाब
DECLARE @FileName Table(FileList Varchar(255))
INSERT INTO @FileName
EXEC XP_CMDSHELL 'dir "C:\Data Log\EODFiles\*.CSV" /b'
INSERT INTO [dbo].[EOD_Log] (filename)
SELECT FileList From @FileName
WHERE Filelist NOT IN (select * FROM [dbo].[EOD_Log])
ORDER BY filelist desc
यह आपकी NULLs समस्या को हल करना चाहिए, एक चर को खाली छोड़ने के बजाय जब एक असाइनमेंट में कोई पंक्तियाँ नहीं होती हैं तो यह केवल INSERTs नहीं करेगा। शीर्ष 1 का भी उपयोग क्यों करें? और मुझे लगता है कि आपको फाइललिस्ट कॉलम में एनयूएलएल की जांच करने की भी आवश्यकता नहीं है।
मुझे यह काम मिल गया लेकिन यह अभी भी गन्दा है।
DECLARE @FileName Table(FileList Varchar(255))
INSERT INTO @FileName
EXEC XP_CMDSHELL 'dir "C:\Data Log\EODFiles\*.CSV" /b'
DECLARE @FilePath Varchar(255)
SELECT Top 1 @FilePath= FileList From @FileName
WHERE FileList is Not Null and Filelist NOT IN (select * FROM [dbo].[EOD_Log])
ORDER BY filelist desc
INSERT INTO [dbo].[EOD_Log] (filename)
VALUES (@filepath)
DELETE from [dbo].[EOD_Log]
WHERE filename IS NULL
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।