static void Main() { Moo.DataManager.MonsoonConnectionString = Properties.Settings.Default.DvinaConnectionString; Moo.DataObs.DataManager.MonsoonDataObservationConnectionString = Properties.Settings.Default.DvinaDataObservationConnectionString; foreach (var file in Directory.GetFiles(DIR_FOR_IMPORT, "*.csv")) { //List<FileRowData> data = FileChemAnnual.Parse(file); var datafile = FileChemAnnual.Parse(file); if (datafile != null) { Console.WriteLine($"Site {datafile[0].SiteCode}, {datafile.Count} file rows readed."); List <DataValue> datavals = DataValue.Convert(datafile); Moo.DataObs.DataObsDataSetTableAdapters.qta qta = new Moo.DataObs.DataObsDataSetTableAdapters.qta(); foreach (DataValue dataval in datavals) { qta.SaveSingleDataValue(dataval.CatalogId, dataval.Date, dataval.OffsetValue, dataval.Value, dataval.FlagAQC, dataval.UTCOffset, dataval.DataSourceId); } if (IS_MOVE_TO_IMPORTED_DIR) { CommonFileProcess.MoveFile2DirImported(file); } } else { Console.WriteLine($"ERROR: 0 file rows readed."); } } Console.WriteLine("Press ENTER..."); Console.ReadLine(); }
static Dictionary <int /*VariableId*/, int /*CatalogId*/> GetCatalogIds(int siteId, List <int> variableIds) { Moo.DataObs.DataObsDataSet ds = new Moo.DataObs.DataObsDataSet(); Moo.DataObs.DataObsDataSetTableAdapters.CatalogsTableAdapter ta = new Moo.DataObs.DataObsDataSetTableAdapters.CatalogsTableAdapter(); Moo.DataObs.DataObsDataSetTableAdapters.qta qta = new Moo.DataObs.DataObsDataSetTableAdapters.qta(); int methodId = 0; // Наблюдения int valueTypeId = 2; // Наблюдения int offsetTypeId = 0; // Нет смещения int dateTypeId = 2; // Local time int sourceId = 1402; // ИВП ДВО РАН ta.Fill(ds.Catalogs, Moo.DataObs.DataManager.GetDataTableArrayOfInt(new List <int>() { siteId }), Moo.DataObs.DataManager.GetDataTableArrayOfInt(variableIds), Moo.DataObs.DataManager.GetDataTableArrayOfInt(new List <int>() { methodId }), Moo.DataObs.DataManager.GetDataTableArrayOfInt(new List <int>() { sourceId }), Moo.DataObs.DataManager.GetDataTableArrayOfInt(new List <int>() { offsetTypeId }), Moo.DataObs.DataManager.GetDataTableArrayOfInt(new List <int>() { valueTypeId }), Moo.DataObs.DataManager.GetDataTableArrayOfInt(new List <int>() { dateTypeId }) ); Dictionary <int /*VariableId*/, int /*CatalogId*/> ret = new Dictionary <int, int>(); foreach (var variableId in variableIds) { IEnumerable <Moo.DataObs.DataObsDataSet.CatalogsRow> ctlRows = ds.Catalogs.Where(x => x.VariableId == variableId); int catalogId = -1; // NO CATALOG RECORD => CREATE if (ctlRows.Count() == 0) { catalogId = (int)qta.InsertCatalogs(siteId, variableId, offsetTypeId, methodId, sourceId, valueTypeId, dateTypeId); } // CATALOG RECORD EXISTS => USE else if (ctlRows.Count() == 1) { catalogId = ctlRows.ElementAt(0).Id; } // MORE THAN ONE CATALOG RECORD => THROW else { throw new Exception($"(ds.Catalogs.Where(x => x.VariableId == {variableId}).Count() > 1)"); } ret.Add(variableId, catalogId); } return(ret); }