Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. module LoadCsv
  2.  
  3. open FSharp.Data
  4. open FSharp.Data.Sql
  5. open System
  6.  
  7. let [<Literal>] ConnectionString = "Server=localhost;Database=sales;User=root;Password=YOUR-DB-PASSWORD-HERE"
  8. let [<Literal>] DbVendor = Common.DatabaseProviderTypes.MYSQL
  9. let [<Literal>] ResPath = "../packages/MySql.Data/lib/net45"
  10.  
  11. type Payments = CsvProvider<"./data/paymentsSample.csv">
  12. type DbProvider = SqlDataProvider<DbVendor, ConnectionString, ResolutionPath = ResPath>
  13.  
  14. let loadCsv (path : string) =
  15. try
  16. let payments = Payments.Load path
  17. let context = DbProvider.GetDataContext()
  18. payments.Rows
  19. |> Seq.iteri (fun i p ->
  20. let row = context.Sales.Payments.``Create(Amount, Date, Name)`` (p.Amount, p.Date, p.Name)
  21. row.Id <- uint32 p.Id
  22. if i % 500 = 499 then context.SubmitUpdates ()
  23. )
  24. context.SubmitUpdates ()
  25. printfn "File '%s' loaded successfully!" path
  26. 0
  27. with
  28. | ex ->
  29. printfn "Exception '%s' raised when trying to load file '%s'." ex.Message path
  30. ex.HResult
  31.  
  32. [<EntryPoint>]
  33. let main argv =
  34. if Array.isEmpty argv then
  35. printfn "You should give the full path to the CSV file to load: LoadCsv.exe path.csv"
  36. -1
  37. else
  38. loadCsv argv.[0]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement