我想設置一個自動作業來連續插入多個txt文件到表中。通過文件名和DateStamp連續導入多個txt文件
我有多個數據採集器輸出多個(每分鐘).txt
文件,並用它們的日期戳即20130921_1755.txt
(YYYYMMDD_HHMM.txt
)命名。他們還有一個名爲DateStamp的字段,其中每個記錄包含第二個日期值。
我知道我想要我的查詢做....
- 插入從目錄中的所有文件名到表
ALLFILENAMES
- 最終表中選擇最大日期
TBLMEASUREMENTS
- 轉換最大日期的文件名( 2013-09-22 17:53:00 to「20130922_1753.txt」)
- 批量插入所有文件名>表格中的最大日期
ALLFILENAMES
我已經用在這裏發現後啓動的進程: Import Multiple CSV Files to SQL Server from a Folder
我有麻煩試圖弄清楚如何選擇哪些特定的文件,我需要導入到表中。特別是因爲這是一項持續的工作,我需要不斷地查看數據庫以查看哪些文件尚未導入,然後導入它們。這是我的代碼到目前爲止工作導入多個文件。
--some variables
declare @filename varchar(255),
@path varchar(255),
@sql varchar(8000),
@cmd varchar(1000)
--get the list of files to process:
SET @path = 'C:\SQL_txt\1_hr\'
SET @cmd = 'dir ' + @path + '*.txt /b'
INSERT INTO ALLFILENAMES(WHICHFILE)
EXEC Master..xp_cmdShell @cmd
UPDATE ALLFILENAMES SET WHICHPATH = @path where WHICHPATH is null
--cursor loop
declare c1 cursor for SELECT WHICHPATH,WHICHFILE FROM ALLFILENAMES where WHICHFILE like '%.txt%'
open c1
fetch next from c1 into @path,@filename
While @@fetch_status <> -1
begin
--bulk insert won't take a variable name, so make a sql and execute it instead:
set @sql = 'BULK INSERT Temp FROM ''' + @path + @filename + ''' '
+ ' WITH (
FIELDTERMINATOR = ''\t'',
ROWTERMINATOR = ''\n''
) '
print @sql
exec (@sql)
fetch next from c1 into @path,@filename
end
close c1
deallocate c1
我一直LEFT,LEN玩耍和REPLACE,試圖最大郵戳轉換爲文件名,但有沒有運氣。任何幫助或建議都會有用。我在這個錯誤?謝謝