private static void SaveTableToSeries(TimeSeriesDatabase db, DataTable table, TimeInterval interval) { int i = 1; string tablePrefix="daily"; if (interval == TimeInterval.Irregular) tablePrefix = "instant"; if (interval == TimeInterval.Monthly) tablePrefix = "monthly"; while( i < table.Columns.Count ) { string tn = table.Columns[i].ColumnName.Trim().ToLower(); tn = tn.Replace(" ", "_"); TimeSeriesName tsn = new TimeSeriesName(tn,interval.ToString().ToLower()); var series1 = db.GetSeriesFromTableName(tn, tablePrefix); Console.Write(tn+ " "); for (int r = 0; r < table.Rows.Count; r++) { var row = table.Rows[r]; object o = row[i]; double val = Point.MissingValueFlag; if (o != DBNull.Value) val = Convert.ToDouble(row[i]); else { continue; // mixing 5 and 15-minute data can cause gaps } string flag = "hmet-import"; if (interval == TimeInterval.Irregular|| interval == TimeInterval.Monthly) flag = row[i + 1].ToString(); DateTime t = Convert.ToDateTime(row[0]); if (interval == TimeInterval.Monthly) { //if( tsn.pcode.ToLower() == "fc" || tsn.pcode.ToLower() == "se" || tsn.pcode.ToLower() == "fcm") t = t.FirstOfMonth(); //if (val != Point.MissingValueFlag && HydrometMonthlySeries.LookupUnits(tsn.pcode) == "1000 acre-feet") // val = val * 1000; } var pt = new Point(t, val, flag); series1.Add(pt); } if (interval == TimeInterval.Irregular || interval == TimeInterval.Monthly) { i += 2;// flag column } else { i++; } int rc = series1.Count; if( rc>0) rc = db.SaveTimeSeriesTable(series1.ID, series1, DatabaseSaveOptions.UpdateExisting); Console.WriteLine(rc + " records saved "+POR(series1.Table)); } }