public ActionResult Import() { string importJson = Request["hidImport"]; JavaScriptSerializer serializer = new JavaScriptSerializer(); dynamic jsonObject = serializer.Deserialize <dynamic>(importJson); //ImportInfo jsonObject; // Do the import string sourceConnectionString = "@File=" + jsonObject["ImportFileLocation"] + ";@Type=Delimited;RowSeperator=" + jsonObject["RowDelimiter"] + ";ColumnSeperator=" + jsonObject["ColumnDelimiter"] + ";FirstRowHasNames=" + jsonObject["FirstRowHasColumnNames"].ToString(); string destConnectionString = ConfigurationManager.AppSettings["SqlConnection"]; ILinkProvider sourceProvider = null; ILinkProvider destProvider = null; destProvider = new SqlLinkProvider(); sourceProvider = new TextProvider(); IDataLink linkSource = sourceProvider.CreateLink(sourceConnectionString); IDataLink linkDestination = destProvider.CreateLink(destConnectionString); SqlDataLink sqlLink = new SqlDataLink(); sqlLink.Initialize(ConfigurationManager.AppSettings["SqlConnection"]); sqlLink.Connect(); DataFlowTask copy = new DataFlowTask() { Name = "DataCopyTask" }; ILinkReader reader = sourceProvider.CreateReader(linkSource, ""); // Since we are using same query string destTable = jsonObject["DestinationTableName"].ToString(); ILinkWriter writer = destProvider.CreateWriter(linkDestination, destTable); // Dest table copy.Input = reader; copy.Output = writer; copy.TableName = destTable; copy.IsAutoMap = false; dynamic maps = jsonObject["Maps"]; foreach (dynamic map in maps) { ColumnMap cmap = new ColumnMap(); cmap.Destination = map["FieldName"]; Expression exp = new Expression() { Code = map["TargetExpression"] }; cmap.TransformExpression = exp; copy.Mapping.Add(cmap); } StringBuilder sb = new StringBuilder(); ReflowEngine engine = new ReflowEngine(); engine.Tasks.Add(copy); ExecutionEventListener eventListener = new ExecutionEventListener(); eventListener.OnTaskExecutionEvent += delegate(string taskname, string eventName, string description) { sb.Append(string.Format("{0,15} |{1,10} | {2} <br>", taskname, eventName, description)); }; eventListener.LoggingLevel = ExecutionEventListener.LogLevel.Verbose; engine.Execute(eventListener); linkSource.Disconnect(); linkDestination.Disconnect(); //System.IO.File.Delete(jsonObject["ImportFileLocation"]); Session.Remove("import_file_path"); this.ViewBag.Log = sb.ToString(); return(View()); }