2013-03-23 39 views
1

任何人都会知道如何从SQL Server中读取文本文件(即连续填充的日志文件)并将其连续导入到SQL Server表中?如何连续使用SQL Server读取文本文件?

我想仅在存储过程中使用T-SQL

除了一次读取整个文件外,我还没有在BULK INSERTOPENROWSET中找到任何选项。我将不得不一次重复执行并查找尚未导入的行。 这是一种可能性,但如果文件变大,则效率不高。

是否可以在每次运行时只读取最新的行?

谢谢! 菲利普

回答

2

你可以为了使用FileSystemWatcher当日志文件更改

FileSystemWatcher watcher = new FileSystemWatcher(); 

watcher.Path = @"C:\PathOfTheLogfile"; 
watcher.Filter = "MyLogfile.txt"; // You can also use wildcards here. 

watcher.NotifyFilter = NotifyFilters.LastWrite; 
watcher.Changed += new FileSystemEventHandler(Watcher_Changed); 
watcher.Created += new FileSystemEventHandler(Watcher_Changed); 

watcher.EnableRaisingEvents = true; // Start watching. 

... 

private static void Watcher_Changed(object source, FileSystemEventArgs e) 
{ 
    if (e.ChangeType == WatcherChangeTypes.Created) { 
     //TODO: Read log from beginning 
    } else { 
     //TODO: Read log from last position 
    } 
    //TODO: write to MSSQL 
    //TODO: remember last log file position 
} 

有时FileSystemWatcher事件触发时该文件仍然被写入得到通知。读取日志文件之前,您可能必须添加延迟。

+0

编辑了这个问题,使其更清晰:我正在寻找一个T-SQL唯一的解决方案(如果可能的话)。不管怎么说,还是要谢谢你。 – 2013-03-23 18:45:24

0

如果您的文件可由Jet提供程序解析,那么您可以使用linked server作为文本文件。

相关问题