public static void InsertAcc(List <string> insertFileList, InsertConfig config, List <InsertDatum> insertDatumList) { foreach (var filePath in insertFileList) //Parallel.For(0, insertFileList.Count, i => { string[] word = filePath.Split('\\'); // ACCファイルでない場合はcontinue if (System.Text.RegularExpressions.Regex.IsMatch(word[word.Length - 1], @"\d{14}Unsent16HzAccel.csv")) { var datum = new InsertDatum() { DriverId = DriverNames.GetDriverId(word[DriverIndex]), CarId = CarNames.GetCarId(word[CarIndex]), SensorId = SensorNames.GetSensorId(word[SensorIndex]), StartTime = config.StartDate, EndTime = config.EndDate, EstimatedCarModel = EstimatedCarModel.GetModel(config.CarModel) }; InsertDatum.AddDatumToList(insertDatumList, datum); InsertAccRaw(filePath, datum); } //}); } }
public static Task InsertGps(List <string> insertFileList, InsertConfig config, int correctionIndex, List <InsertDatum> insertDatumList) { var tasks = new List <Task>(); foreach (string filePath in insertFileList) { Console.WriteLine("GPSinserting:" + filePath); string[] word = filePath.Split('\\'); // GPSファイルでない場合はcontinue if (!System.Text.RegularExpressions.Regex.IsMatch(word[word.Length - 1], @"\d{14}UnsentGPS.csv")) { continue; } var datum = new InsertDatum() { DriverId = DriverNames.GetDriverId(word[DriverIndex]), CarId = CarNames.GetCarId(word[CarIndex]), SensorId = SensorNames.GetSensorId(word[SensorIndex]), StartTime = config.StartDate, EndTime = config.EndDate, EstimatedCarModel = EstimatedCarModel.GetModel(config.CarModel) }; InsertDatum.AddDatumToList(insertDatumList, datum); LogWritter.WriteLog(LogWritter.LogMode.Gps, $"インサートデータ, FilePath: {filePath}, DriverId: {datum.DriverId}, CarId: {datum.CarId}, SensorId: {datum.SensorId}"); // ファイルごとの処理なので主キー違反があっても挿入されないだけ var gpsRawTable = InsertGpsRaw(filePath, datum, config.Correction[correctionIndex]); if (config.Correction[correctionIndex] == InsertConfig.GpsCorrection.SpeedLPFMapMatching || config.Correction[correctionIndex] == InsertConfig.GpsCorrection.MapMatching) { gpsRawTable = MapMatching.getResultMapMatching(gpsRawTable, datum); } else if (config.Correction[correctionIndex] == InsertConfig.GpsCorrection.DopplerSpeed) { gpsRawTable = MapMatching.getResultMapMatchingDoppler(gpsRawTable, datum); } if (gpsRawTable.Rows.Count != 0) { var task = Task.Run(() => { InsertCorrectedGps(gpsRawTable, config.Correction[correctionIndex]); }); tasks.Add(task); TripInserter.InsertTripRaw(gpsRawTable, config.Correction[correctionIndex]); //TripInserter.InsertTrip(datum, config.Correction[correctionIndex]); } else { LogWritter.WriteLog(LogWritter.LogMode.Gps, $"ファイルの行数が0行のためインサートを行いませんでした: {filePath}"); } } return(Task.WhenAll(tasks)); }