J'ai récemment appris la programmation F # et fonctionnelle. Une application que j'ai trouvée très utile est la génération d'insertions SQL pour un chargement de données à partir d'un fichier CSV (ou d'une table excel) avec des ID associés.F # Générer du code SQL à partir de CSV
Le code suivant est mon résultat, que je crois que je trouverai très utile à l'avenir. Je pensais que d'autres pourraient également bénéficier de cela et je me réjouis de suggestions et d'autres scripts les gens ont trouvé une valeur inestimable dans leur collection:
// Returns some dataload SQL for area mapping.
open System
open System.IO
// Read and split CSV into lists
let map_ngo_area = File.ReadAllLines(@"P:\MY_TABLE.csv")
|> Array.to_list
|> List.map(fun x -> (x.Split([|','|])
|> Array.map(fun y -> y.Trim()))
|> Array.to_list)
// Output Formatting function
let format_sql_record = "INSERT INTO MyTable
(ID, REF1_ID, REF2_ID, CreatedUser, CreatedDateTime, LastModifiedUser, LastModifiedDateTime)
VALUES
({0}, {1}, {2}, 'system', getDate(), 'system', getDate())"
// Generate the SQL for the given list.
let generate_sql list = list |> List.mapi(fun index row ->
match row with
| [ngo_id; area_id] -> String.Format(format_sql_record, ((int index)+1), ngo_id, area_id) |> printfn "%s"
| _ -> printfn "")
// Main Execution
map_ngo_area |> generate_sql |> ignore
// End of program, pause to view console output.
System.Console.ReadKey() |> ignore
Toutes les suggestions sur l'amélioration de mon code F # ou processus? Les commentaires sont également les bienvenus, car je suis relativement nouveau à ce paradigme et la pensée changeante n'est pas aussi claire que je le pensais.
Merci :)
Impressionnant, grâce KVB ils sont quelques conseils! :) – Russell