public string BulkInsertCmd <T>(List <T> items) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine($"INSERT INTO {nameof(Person)}({BulkHelper.CommaSeparatedPropertiesNameFromType(typeof(Person))})"); items.ForEach(item => { stringBuilder.AppendLine($"SELECT {BulkHelper.CommaSeparatedPropertiesNamedValueFromObject(item)}{BulkHelper.CmdLineDelimiter(items, item)}"); }); return(stringBuilder.ToString()); }
/// <summary> /// Run log file processing /// </summary> public void Run() { BulkHelper <EventData> blkHelper = new BulkHelper <EventData>("logs" + DateTime.UtcNow.ToString("YYYYMMddHHmmss"), new LiteDbService(_logger), _logger); using (FileStream fs = File.Open(_filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) using (StreamReader sr = new StreamReader(fs)) { Dictionary <string, LogLine> lines = new Dictionary <string, LogLine>(); string line; while ((line = sr.ReadLine()) != null) { LogLine currentLine = _convertService.ToObject(line); LogLine logLine; if (lines.TryGetValue(currentLine.Id, out logLine)) { EventData eventData = _processService.Create(currentLine, logLine); if (eventData == null) { continue; } blkHelper.QueueInsert(eventData); lines.Remove(currentLine.Id); } else { lines.Add(currentLine.Id, currentLine); } } blkHelper.QueuePush(); } _logger.Info($"File processed."); }
private static void BulkCopy_SqlRowsCopied(object sender, SqlRowsCopiedEventArgs e) { BulkHelper.ReportBulkProgress(sender, e); }