Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module LoadCsv
- open FSharp.Data
- open FSharp.Data.Sql
- open System
- let [<Literal>] ConnectionString = "Server=localhost;Database=sales;User=root;Password=YOUR-DB-PASSWORD-HERE"
- let [<Literal>] DbVendor = Common.DatabaseProviderTypes.MYSQL
- let [<Literal>] ResPath = "../packages/MySql.Data/lib/net45"
- type Payments = CsvProvider<"./data/paymentsSample.csv">
- type DbProvider = SqlDataProvider<DbVendor, ConnectionString, ResolutionPath = ResPath>
- let loadCsv (path : string) =
- try
- let payments = Payments.Load path
- let context = DbProvider.GetDataContext()
- payments.Rows
- |> Seq.iteri (fun i p ->
- let row = context.Sales.Payments.``Create(Amount, Date, Name)`` (p.Amount, p.Date, p.Name)
- row.Id <- uint32 p.Id
- if i % 500 = 499 then context.SubmitUpdates ()
- )
- context.SubmitUpdates ()
- printfn "File '%s' loaded successfully!" path
- 0
- with
- | ex ->
- printfn "Exception '%s' raised when trying to load file '%s'." ex.Message path
- ex.HResult
- [<EntryPoint>]
- let main argv =
- if Array.isEmpty argv then
- printfn "You should give the full path to the CSV file to load: LoadCsv.exe path.csv"
- -1
- else
- loadCsv argv.[0]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement