あるフォルダ配下の "CREATE TABLE", "CREATE PROCEDURE", "ALTER PROCEDURE" の1行を取得する。
F#を訓練したおかげで、結構ぱっとかけるようになりました。
■コード
open System.IO let list path = let checkArr = [|"CREATE TABLE"; "CREATE PROCEDURE"; "ALTER PROCEDURE";|] let check (t : string) = let t = t.ToUpper() checkArr |> Array.exists (fun c -> t.IndexOf(c) >= 0) Directory.GetFiles(path, "*.sql", SearchOption.AllDirectories) |> Seq.map (fun path -> seq { use sr = new StreamReader(path) while not sr.EndOfStream do yield sr.ReadLine() }) |> Seq.map(Seq.find check)
■使い方
// CREATE文の一覧を取得する。 list "[path]" |> Seq.iter (printfn "%A");;