0

FileZilla からの FTP ログを解析する TSQL クエリを作成しています。現在の行の前の行から情報を取得する方法があるかどうかを調べようとしていますか?

たとえば、次の手順を解析しました: "STOR file.exe"

FileZilla では、STOR が成功したかどうかは次の行までわかりません。次の行を確認して、STOR が成功したか失敗したかを確認します。

また、人々はファイルを複数回 STOR しようとする可能性があるため、そのステータスの最新バージョンを取得したいと考えています。

ログファイルからの情報の例:

   (000005) 4/10/2010 14:55:30 PM - ftp_login_name (IP Address)> STOR file.exe
   (000005) 4/10/2010 14:55:30 PM - ftp_login_name (IP Address)> 150 Opening data for transfer.
   (000005) 4/10/2010 14:55:30 PM - ftp_login_name (IP Address)> 226 Transfer OK

STOR が成功したか失敗したかを示す列をクエリに追加したいと考えています。

ありがとう!

4

2 に答える 2

2

これらの行を実際の列に解析し、S​​QL Server 2005 以降を使用しているとします。以下のクエリ例を使用できCROSS APPLYます (未テスト)。これが役立つことを願っています。

select o.*, prev.*
from FTPLog o
cross apply 
 (
   select top 1 *
   from FTPLog P where P.LogDate < O.LogDate 
   order by LogDate DESC
 ) prev
于 2011-08-12T16:54:12.790 に答える
1

ジェームズは正しい考えを持っていますが、ログの日付がまったく同じである場合、いくつかの問題が発生する可能性があります (サンプルからは、そうなる可能性があるように見えます)。ID 列を追加して、データの挿入時に順序を強制することができる場合があります。その後、ID 列で James の概念を使用できます。

それ以上に、TSQL は、少なくともそれ自体では、このプロジェクトにとって最良の選択ではないかもしれません。順次反復させるために使用できる手法はありますが、他の特定の言語ほど適切ではありません。Python や Perl、さらには C# など、テキスト処理とデータの順次処理に優れたツールでファイルを解析することを検討することをお勧めします。

于 2011-08-12T17:16:57.533 に答える