我尝试使用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
答案 0 :(得分:0)
我得到了它的工作,但它仍然很混乱。
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
答案 1 :(得分:0)
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
这应解决你的NULL问题,而不是在一个赋值中没有行的情况下将变量留空,它将不会执行任何INSERT。为什么甚至使用Top 1?而且我认为您甚至不需要在FileList列中检查NULL。