1

SQL Serverからテキストファイル(つまり、ログファイルが継続的に入力されている)を読み取り、それをSQL Serverテーブルに継続的にインポートする方法を知っている人はいますか?

たとえば、ストアドプロシージャ内では、T-SQLのみを使用したいと思います。

ファイル全体を一度に読み取る以外のオプションは見つかりませんでしBULK INSERTた。OPENROWSET一度に繰り返し実行して、まだインポートされていない行を探す必要があります。これは可能性ですが、ファイルが大きくなるとあまり効率的ではありません。

各実行で最新の行のみを読み取ることは可能ですか?

ありがとう !フィリップ

4

2 に答える 2

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ファイルがまだ書き込まれているときに、イベントが発生することがあります。ログ ファイルを読み取る前に、遅延を追加する必要がある場合があります。

于 2013-03-23T17:58:15.997 に答える
0

ファイルが Jet プロバイダーによって解析可能な場合は、テキスト ファイルへのリンク サーバーを使用できる場合があります。

于 2013-03-24T16:19:05.807 に答える