コード例 #1
0
ファイル: Program.cs プロジェクト: fodorelli/ChoETL
        static void AsDataReaderTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRec>(reader))
                        {
                            writer.WriteLine("1,Carl");
                            writer.WriteLine("2,Mark");
                            writer.WriteLine("3,Tom");

                            writer.Flush();
                            stream.Position = 0;

                            IDataReader dr = parser.AsDataReader();
                            while (dr.Read())
                            {
                                Console.WriteLine("Id: {0}, Name: {1}", dr[0], dr[1]);
                            }
                        }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: gitter-badger/ChoETL
        static void AsDataTableTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRec>(reader))
                        {
                            writer.WriteLine("1,Carl");
                            writer.WriteLine("2,Mark");
                            writer.WriteLine("3,Tom");

                            writer.Flush();
                            stream.Position = 0;

                            DataTable dt = parser.AsDataTable();
                            foreach (DataRow dr in dt.Rows)
                            {
                                Console.WriteLine("Id: {0}, Name: {1}", dr[0], dr[1]);
                            }
                        }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: fodorelli/ChoETL
        static void CurrencyTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRecWithCurrency>(reader))
                        {
                            writer.WriteLine("1,Carl,$100000");
                            writer.WriteLine("2,Mark,$50000");
                            writer.WriteLine("3,Tom,1000");

                            writer.Flush();
                            stream.Position = 0;

                            object rec;
                            while ((rec = parser.Read()) != null)
                            {
                                Console.WriteLine(rec.ToStringEx());
                            }
                        }
        }
コード例 #4
0
        /***************************************************************************************/

        //Reader for CSV file:
        #region READER
        // Read CSV
        private void ReadCSV(string filename)
        {
            try
            {
                Expression exp;
                using (var parser = new ChoCSVReader(filename).WithFirstLineHeader().WithDelimiter(","))
                {
                    foreach (var e in parser)
                    {
                        int    id         = (e.Count == 2) ? int.Parse(e[0]) : 0;
                        string expression = (e.Count == 2) ? e[1] : "";
                        exp = new Expression(id, expression);

                        expressions.Add(exp);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
        }
コード例 #5
0
        static void WriteDataTableTest()
        {
            string csv = @"Id, Name
1, Tom
2, Mark";

            StringBuilder yaml = new StringBuilder();

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                   )
            {
                using (var w = new ChoYamlWriter(yaml)
                               //.ReuseSerializerObject(false)
                       )
                {
                    w.Write(r.AsDataTable());
                }
            }

            Console.WriteLine(yaml.ToString());
        }
コード例 #6
0
 static void Sample3()
 {
     using (var p = new ChoCSVReader <Site>("Sample3.csv")
                    //.ClearFields()
                    //            .WithField(m => m.SiteID)
                    //            .WithField(m => m.SiteAddress.City)
                    .WithFirstLineHeader(true)
                    .Configure(c => c.ObjectValidationMode = ChoObjectValidationMode.ObjectLevel)
            )
     {
         StringBuilder msg = new StringBuilder();
         using (var w = new ChoCSVWriter <Site>(new StringWriter(msg))
                        .WithFirstLineHeader()
                )
         {
             w.Write(p);
         }
         Console.WriteLine(msg.ToString());
         //foreach (var rec in p)
         //Console.WriteLine(rec.Dump());
     }
 }
コード例 #7
0
ファイル: Program.cs プロジェクト: fredatgithub/ChoETL
        public static void CSVWithJSON()
        {
            using (var parser = new ChoCSVReader <EmpWithJSON>("emp1.csv"))
            {
                parser.BeforeRecordFieldLoad += (o, e) =>
                {
                    if (e.PropertyName == "JsonValue")
                    {
                        EmpWithJSON rec     = e.Record as EmpWithJSON;
                        dynamic     jobject = ChoJSONReader.LoadText((string)e.Source).FirstOrDefault();
                        rec.product_version_id   = jobject.product_version_id;
                        rec.product_version_name = jobject.product_version_name;
                        e.Skip = true;
                    }
                };
                using (var jp = new ChoJSONWriter("emp1.json"))
                    jp.Write(parser.Select(i => new { i.Id, i.Name, i.product_version_id, i.product_version_name }));

                //foreach (var rec in parser)
                //    Console.WriteLine(rec.product_version_id);
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: fredatgithub/ChoETL
        static void QuickTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRecWithCurrency>(reader).WithDelimiter(",").WithFirstLineHeader())
                        {
                            writer.WriteLine("Id,Name,Salary");
                            writer.WriteLine("1,Carl,1000");
                            writer.WriteLine("2,Mark,2000");
                            writer.WriteLine("3,Tom,3000");

                            writer.Flush();
                            stream.Position = 0;

                            object rec;
                            while ((rec = parser.Read()) != null)
                            {
                                Console.WriteLine(rec.ToStringEx());
                            }
                        }
        }
コード例 #9
0
        static void DataTableTest()
        {
            string csv = @"Id, Name
1, Tom
2, Mark";

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                   )
            {
                var dt = r.AsDataTable("Emp");

                using (var w = new ChoParquetWriter("datatable.parquet"))
                {
                    w.Write(dt);
                    w.Close();

                    var s = w.Configuration.Schema;
                    s.Print();
                }
            }
        }
コード例 #10
0
        static void EnumTest()
        {
            ChoTypeConverterFormatSpec.Instance.EnumFormat = ChoEnumFormatSpec.Description;

            using (var w = new ChoParquetWriter("EnumTest.parquet")
                           .WithField("Id")
                           .WithField("Name")
                           .WithField("EmpType", valueConverter: o => (int)o, fieldType: typeof(int))
                   )
            {
                w.Write(new
                {
                    Id      = 1,
                    Name    = "Tom",
                    EmpType = EmployeeType.Permanent
                });
            }
            return;

            string csv = @"Id, Name, EmpType
1, Tom, Full Time Employee
2, Mark, Contract Employee";

            ChoTypeConverterFormatSpec.Instance.EnumFormat = ChoEnumFormatSpec.Description;

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                           .WithField("Id", fieldType: typeof(int))
                           .WithField("Name")
                           .WithField("EmpType", fieldType: typeof(EmployeeType))
                   )
            {
                using (var w = new ChoParquetWriter("EnumTest.parquet"))
                {
                    w.Write(r);
                }
            }
        }
コード例 #11
0
ファイル: Form1.cs プロジェクト: Gluups/Tension
        private void Form1_Load(object sender, EventArgs e)
        {
            UnJourTransfert ujt = new UnJourTransfert();

            using (ChoCSVReader <UnJourTransfert> reader = new ChoCSVReader <UnJourTransfert>("Tension.csv"))
            {
                while ((ujt = reader.Read()) != null)
                {
                    UneTension tension1 = new UneTension(ujt.sys1.ToString() + ";" + ujt.dia1.ToString() + ";" + ujt.pul1.ToString());
                    UneTension tension2 = new UneTension(ujt.sys2.ToString() + ";" + ujt.dia2.ToString() + ";" + ujt.pul2.ToString());
                    UneTension tension3 = new UneTension(ujt.sys3.ToString() + ";" + ujt.dia3.ToString() + ";" + ujt.pul3.ToString());
                    UneTension tension4 = new UneTension(ujt.sys4.ToString() + ";" + ujt.dia4.ToString() + ";" + ujt.pul4.ToString());
                    UneTension tension5 = new UneTension(ujt.sys5.ToString() + ";" + ujt.dia5.ToString() + ";" + ujt.pul5.ToString());
                    UneTension tension6 = new UneTension(ujt.sys6.ToString() + ";" + ujt.dia6.ToString() + ";" + ujt.pul6.ToString());
                    UnJour     uj       = new UnJour();
                    uj.matin1 = tension1;
                    uj.matin2 = tension2;
                    uj.matin3 = tension3;
                    uj.soir1  = tension4;
                    uj.soir2  = tension5;
                    uj.soir3  = tension6;
                    this.dateTimePicker1.Value = DateTime.Parse(ujt.LaDate);
                    uj.annee = dateTimePicker1.Value.Year;
                    uj.mois  = dateTimePicker1.Value.Month;
                    uj.jour  = dateTimePicker1.Value.Day;
                    LJ.Add(uj);
                    ctlUneTension1.import(tension1.sys.ToString() + ";" + tension1.dia.ToString() + ";" + tension1.pul.ToString());
                    ctlUneTension2.import(tension2.sys.ToString() + ";" + tension2.dia.ToString() + ";" + tension2.pul.ToString());
                    ctlUneTension3.import(tension3.sys.ToString() + ";" + tension3.dia.ToString() + ";" + tension3.pul.ToString());
                    ctlUneTension4.import(tension4.sys.ToString() + ";" + tension4.dia.ToString() + ";" + tension4.pul.ToString());
                    ctlUneTension5.import(tension5.sys.ToString() + ";" + tension5.dia.ToString() + ";" + tension5.pul.ToString());
                    ctlUneTension6.import(tension6.sys.ToString() + ";" + tension6.dia.ToString() + ";" + tension6.pul.ToString());
                }

                UpdateScrollbar();
                UnJour uj1 = (UnJour)LJ[hScrollBar1.Value - 1];
            }
        }
コード例 #12
0
ファイル: FileImport.cs プロジェクト: SawasdeeKrab/Test2C2P
        public void CSV(Stream fileStream)
        {
            var stream = new StreamReader(fileStream);

            using (stream)
            {
                var fileContent = "";
                while (stream.Peek() >= 0)
                {
                    var line = stream.ReadLine();
                    line = Regex.Replace(line, @"(""[^"",]+),([^""]+"")",
                                         m => m.Value.Replace(",", ""));
                    line         = line.Replace("\"", "");
                    fileContent += line + Environment.NewLine;
                }

                foreach (var rec in ChoCSVReader <PaymentModel> .LoadText(fileContent))
                {
                    var payment = Mapper.Map <Payment>(rec);
                    paymentRepository.Insert(payment);
                }
            }
        }
コード例 #13
0
        static void ReadNWrite()
        {
            string csv = @"Id, Name
1, Tom
2, Mark
";

            StringBuilder csvOut = new StringBuilder();

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                   )
            {
                using (var w = new ChoCSVWriter(csvOut))
                    w.Write(r.Select(r1 => new
                    {
                        r1.Id,
                        r1.Name,
                        City = "NY"
                    }));
            }
            Console.WriteLine(csvOut.ToString());
        }
コード例 #14
0
        public void TipIt_ConvertsNrlResultsCsvToJson_Ok()
        {
            var    fileName = "nrl-2021.csv";
            string path     = Directory.GetCurrentDirectory();

            if (!File.Exists(fileName))
            {
                _output.WriteLine($"Could not find file {fileName} in {path}");
            }
            else
            {
                var reader = new ChoCSVReader <ResultRec>(fileName)
                             .WithFirstLineHeader();
                foreach (var x in reader)
                {
                    x.HomeTeam = ConvertNrlTeam(x.HomeTeam);
                    x.AwayTeam = ConvertNrlTeam(x.AwayTeam);
                    x.GameDate = ConvertDate(x.GameDate);
                    var jo = new ResultJson(x, "NRL");
                    _output.WriteLine(jo.DumpAsJson());
                }
            }
        }
コード例 #15
0
ファイル: Program.cs プロジェクト: ScottColson/ChoETL
        static void ConvertToNestedObjects()
        {
            using (var json = new ChoJSONWriter("nested.json").Configure(c => c.UseJSONSerialization = false))
            {
                using (var csv = new ChoCSVReader("nested.csv").WithFirstLineHeader())
                    json.Write(csv.Select(i => i.ConvertToNestedObject('_')));
            }

            return;

            ExpandoObject dict = new ExpandoObject();
            IDictionary <string, object> root = dict as IDictionary <string, object>;

            root.Add("id", 1);
            root.Add("name", "NYC");
            root.Add("category/id /", 11);
            root.Add("category /name ", "NJ");
            root.Add("category/subcategory/id", 111);
            root.Add("category/subcategory/name", "MA");

            using (var json = new ChoJSONWriter <dynamic>("nested.json"))
                json.Write(dict.ConvertToNestedObject());
        }
コード例 #16
0
        public void CSVTest1()
        {
            string csv = @"Id, Name 
2, Tom
3, Mark";

            foreach (var rec in ChoCSVReader.LoadText(csv)
                     .WithFirstLineHeader())
            {
                Trace.WriteLine((string)rec.Dump());
            }
            //var dr = ChoCSVReader.LoadText(csv)
            //    .WithFirstLineHeader()
            //    .WithField("Id")
            //    .WithField("Name", valueConverter: (o) => o == null ? String.Empty : o)
            //    .Configure(c => c.IgnoreFieldValueMode = ChoIgnoreFieldValueMode.Any)
            //    .AsDataReader();
            //while (dr.Read())
            //{
            //    var x = dr[1];
            //}
            Assert.IsTrue(true);
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: fredatgithub/ChoETL
        public static void CultureSpecificDateTimeTest()
        {
            string csvData =
                @"Id,Date,Account,Amount,Subcategory,Memo
 1,09/05/2017,XXX XXXXXX,-29.00,FT , [Sample string]
 2,09/05/2017,XXX XXXXXX,-20.00,FT ,[Sample string]
 3,25/05/2017,XXX XXXXXX,-6.30,PAYMENT,[Sample string]";

            List <Transaction> result = new List <Transaction>();

            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(csvData)))
                using (StreamReader sr = new StreamReader(ms))
                {
                    var csv = new ChoCSVReader <Transaction>(sr).WithFirstLineHeader();
                    csv.TraceSwitch = ChoETLFramework.TraceSwitchOff;
                    //csv.Configuration.Culture = CultureInfo.GetCultureInfo("en-GB");
                    foreach (var t in csv)
                    {
                        Console.WriteLine(string.Format("{0:dd-MMM-yyyy}  {1}  {2,6}  {3,-7}  {4}",
                                                        t.Date, t.Account, t.Amount, t.Subcategory, t.Memo));
                    }
                }
        }
コード例 #18
0
        /// <summary>
        ///sorting the state for population,density and area
        /// </summary>
        /// <param name="path"> State Code data path </param>
        /// <param name="jsonFilepath"> Delimiter </param>
        /// <param name="key"> Header </param>
        /// <returns> sorting the state for population,density and area </returns>
        public static string SortCSVInJsonAndReturnData(string path, string jsonFilepath, string key)
        {
            //create a object to read file
            string        csvfile = File.ReadAllText(path);
            StringBuilder json    = new StringBuilder();

            //read a csv file
            using (var p = ChoCSVReader.LoadText(csvfile)
                           .WithFirstLineHeader()
                   )
            {
                //write json file
                using (var w = new ChoJSONWriter(json))
                    w.Write(p);
            }
            File.WriteAllText(jsonFilepath, json.ToString());
            JArray arr = CSVOperations.SortJsonBasedOnKeyAndValueIsNumber(jsonFilepath, key);
            //convert into json format
            var jsonArr = JsonConvert.SerializeObject(arr, Formatting.Indented);

            File.WriteAllText(jsonFilepath, jsonArr);

            return(CSVOperations.RetriveLastDataOnKey(jsonFilepath, key));
        }
コード例 #19
0
ファイル: Program.cs プロジェクト: fredatgithub/ChoETL
        static void QuickDynamicTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader(reader).WithDelimiter(",").WithFirstLineHeader().WithField("Id", typeof(int)).
                                            WithField("Name", typeof(string), fieldName: "@Name $1").ColumnOrderStrict())
                        {
                            writer.WriteLine("Id,@Name $1,Salary");
                            writer.WriteLine("1,Carl,1000");
                            writer.WriteLine("2,Mark,2000");
                            writer.WriteLine("3,Tom,3000");

                            writer.Flush();
                            stream.Position = 0;

                            dynamic rec;
                            while ((rec = parser.Read()) != null)
                            {
                                //Console.WriteLine(rec.Name);
                                Console.WriteLine(((object)rec).ToStringEx());
                            }
                        }
        }
コード例 #20
0
ファイル: Program.cs プロジェクト: fredatgithub/ChoETL
        static void IgnoreLineTest()
        {
            using (var parser = new ChoCSVReader("IgnoreLineFile.csv").WithFirstLineHeader())
            {
                parser.Configuration.Encoding = Encoding.BigEndianUnicode;

                parser.BeforeRecordLoad += (o, e) =>
                {
                    if (e.Source != null)
                    {
                        e.Skip = ((string)e.Source).StartsWith("%");
                    }
                };
                parser.BeforeRecordFieldLoad += (o, e) =>
                {
                    //if (e.PropertyName == "Id")
                    //    e.Skip = true;
                };

                parser.AfterRecordFieldLoad += (o, e) =>
                {
                    if (e.Source.ToNString() == "2")
                    {
                        e.Stop = true;
                    }
                };
                parser.AfterRecordLoad += (o, e) =>
                {
                    e.Stop = false;
                };
                foreach (var e in parser)
                {
                    Console.WriteLine(e.ToStringEx());
                }
            }
        }
コード例 #21
0
 /// <summary>
 /// Coverts csv string to json string
 /// </summary>
 /// <param name="csvContent">string content of csv data</param>
 /// <param name="delimiter">delimiter used in csv data</param>
 /// <returns></returns>
 public static string Convert(string csvContent, string delimiter)
 {
     try
     {
         string jsonResult;
         using (var p = new ChoCSVReader(new StringReader(csvContent)).WithFirstLineHeader().WithDelimiter(delimiter))
         {
             using (var stringWriter = new StringWriter())
             {
                 using (var w = new ChoJSONWriter(stringWriter))
                 {
                     w.Write(p);
                 }
                 jsonResult = stringWriter.ToString();
             }
         }
         return(jsonResult);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
コード例 #22
0
ファイル: Program.cs プロジェクト: xman086/ChoETL
        public static void POCOCSVW2XmlNoFormattingTest()
        {
            string csv = @"Id, Name
1, Tom
2, Mark";

            StringBuilder xml = new StringBuilder();

            using (var r = ChoCSVReader <Emp> .LoadText(csv)
                           .WithFirstLineHeader())
            {
                using (var w = new ChoXmlWriter <Emp>(xml)
                               .ErrorMode(ChoErrorMode.ThrowAndStop)
                               //.IgnoreRootName()
                               //.IgnoreNodeName()
                               //.Configure(c => c.Formatting = System.Xml.Formatting.None)
                       )
                {
                    w.Write(r.First());
                }
            }

            Console.WriteLine(xml.ToString());
        }
コード例 #23
0
        public IEnumerable <ItemDTO> Post([FromBody] string value)
        {
            StringBuilder sb = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(value).WithFirstLineHeader())
            {
                using (var w = new ChoJSONWriter(sb))
                {
                    w.Write(p);
                }
            }
            var            items    = _context.Porducts.ToList();
            var            content  = JsonConvert.DeserializeObject <IEnumerable <Item> >(sb.ToString());
            List <ItemDTO> newItems = new List <ItemDTO>();

            foreach (Item item in content)
            {
                if (!items.Any(y => y.Id == item.Id))
                {
                    var newItem = new ItemDTO()
                    {
                        Product = item, Updated = false
                    };
                    newItems.Add(newItem);
                }
                else
                {
                    var existingItem = new ItemDTO()
                    {
                        Product = item, Updated = true
                    };
                    newItems.Add(existingItem);
                }
            }
            return(newItems);
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: fredatgithub/ChoETL
        private static void OldTest()
        {
            //var t = ChoTypeDescriptor.GetPropetyAttributes<ChoTypeConverterAttribute>(ChoTypeDescriptor.GetProperty<ChoTypeConverterAttribute>(typeof(EmployeeRecMeta), "Name")).ToArray();
            //return;

            //ChoMetadataObjectCache.Default.Attach(typeof(EmployeeRec), new EmployeeRecMeta());
            //string v = @"4,'123\r\n4,abc'";
            //foreach (var ss in v.SplitNTrim(",", ChoStringSplitOptions.None, '\''))
            //    Console.WriteLine(ss + "-");
            //return;

            ChoCSVRecordConfiguration config = new ChoCSVRecordConfiguration();

            //config.AutoDiscoverColumns = false;
            config.FileHeaderConfiguration.HasHeaderRecord = true;
            //config.CSVFileHeaderConfiguration.FillChar = '$';
            config.ThrowAndStopOnMissingField = false;
            //config.HasExcelSeparator = true;
            config.ColumnCountStrict = false;
            //config.MapRecordFields<EmployeeRec>();
            ChoCSVRecordFieldConfiguration idConfig = new ChoCSVRecordFieldConfiguration("Id", 1);

            idConfig.AddConverter(new IntConverter());
            config.CSVRecordFieldConfigurations.Add(idConfig);
            config.CSVRecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration("Name", 2));
            config.CSVRecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration("Name1", 2));

            dynamic rec = new ExpandoObject();

            rec.Id   = 1;
            rec.Name = "Raj";

            //using (var wr = new ChoCSVWriter("EmpOut.csv", config))
            //{
            //    wr.Write(new List<ExpandoObject>() { rec });
            //}

            //List<EmployeeRec> recs = new List<EmployeeRec>();
            //recs.Add(new EmployeeRec() { Id = 1, Name = "Raj" });
            //recs.Add(new EmployeeRec() { Id = 2, Name = "Mark" });

            //using (var stream = new MemoryStream())
            //using (var reader = new StreamReader(stream))
            //using (var writer = new StreamWriter(stream))
            //using (var parser = new ChoCSVWriter<EmployeeRec>(writer, config))
            //{
            //    parser.Write(recs);
            //    writer.Flush();
            //    stream.Position = 0;

            //    Console.WriteLine(reader.ReadToEnd());
            //}
            //return;

            //string txt = "Id, Name\r\n1, Mark";
            //foreach (var e in ChoCSVReader.LoadText(txt))
            //    Console.WriteLine(e.ToStringEx());
            //return;
            //dynamic row;
            //using (var stream = new MemoryStream())
            //using (var reader = new StreamReader(stream))
            //using (var writer = new StreamWriter(stream))
            //using (var parser = new ChoCSVReader(reader, config))
            //{
            //    //writer.WriteLine("Id,Name");
            //    writer.WriteLine("1,Carl");
            //    writer.WriteLine("2,Mark");
            //    writer.Flush();
            //    stream.Position = 0;

            //    while ((row = parser.Read()) != null)
            //    {
            //        Console.WriteLine(row.Id);
            //    }
            //}
            //return;

            //DataTable dt = new ChoCSVReader<EmployeeRec>("Emp.csv").AsDataTable();
            //var z = dt.Rows.Count;
            //return;

            foreach (var item in new ChoCSVReader <EmployeeRec>("Emp.csv"))
            {
                Console.WriteLine(item.ToStringEx());
            }
            return;

            //var reader = new ChoCSVReader<EmployeeRec>("Emp.csv");
            //var rec = (object)null;

            //while ((rec = reader.Read()) != null)
            //    Console.WriteLine(rec.ToStringEx());

            //var config = new ChoCSVRecordConfiguration(typeof(EmployeeRec));
            //var e = new ChoCSVReader("Emp.csv", config);
            //dynamic i;
            //while ((i = e.Read()) != null)
            //    Console.WriteLine(i.Id);

            ChoETLFramework.Initialize();
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRec>(reader))
                        {
                            writer.WriteLine("Id,Name");
                            writer.WriteLine("1,Carl");
                            writer.WriteLine("2,Mark");
                            writer.Flush();
                            stream.Position = 0;
                            //var dr = parser.AsDataReader();
                            //while (dr.Read())
                            //{
                            //    Console.WriteLine(dr[0]);
                            //}
                            object row1 = null;

                            //parser.Configuration.ColumnCountStrict = true;
                            while ((row1 = parser.Read()) != null)
                            {
                                Console.WriteLine(row1.ToStringEx());
                            }
                        }
        }
コード例 #25
0
        static void Main(string[] args)
        {
            ChoCSVRecordConfiguration config = new ChoCSVRecordConfiguration();

            config.RecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration("Id", 1));
            config.RecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration("Name", 2));

            dynamic row;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader(reader, config))
                        {
                            writer.WriteLine("1,Carl");
                            writer.WriteLine("2,Mark");
                            writer.Flush();
                            stream.Position = 0;

                            while ((row = parser.Read()) != null)
                            {
                                Console.WriteLine(row.Name);
                            }
                        }
            return;

            //DataTable dt = new ChoCSVReader<EmployeeRec>("Emp.csv").AsDataTable();
            //var z = dt.Rows.Count;
            //return;

            //foreach (var e in new ChoCSVReader<EmployeeRec>("Emp.csv"))
            //    Console.WriteLine(e.ToStringEx());

            //var reader = new ChoCSVReader<EmployeeRec>("Emp.csv");
            //var rec = (object)null;

            //while ((rec = reader.Read()) != null)
            //    Console.WriteLine(rec.ToStringEx());

            //var config = new ChoCSVRecordConfiguration(typeof(EmployeeRec));
            //var e = new ChoCSVReader("Emp.csv", config);
            //dynamic i;
            //while ((i = e.Read()) != null)
            //    Console.WriteLine(i.Id);

            ChoETLFramework.Initialize();
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRec>(reader))
                        {
                            //writer.WriteLine("Id,Name");
                            writer.WriteLine("1,Carl");
                            writer.WriteLine("2,Mark");
                            writer.Flush();
                            stream.Position = 0;
                            var dr = parser.AsDataReader();
                            while (dr.Read())
                            {
                                Console.WriteLine(dr[0]);
                            }
                            //object row = null;

                            //parser.Configuration.ColumnCountStrict = true;
                            //while ((row = parser.Read()) != null)
                            //{
                            //    Console.WriteLine(row.ToStringEx());
                            //}
                        }
        }
コード例 #26
0
ファイル: Program.cs プロジェクト: tablesmit/ChoETL
        static void Main(string[] args)
        {
            //string v = @"4,'123\r\n4,abc'";
            //foreach (var ss in v.SplitNTrim(",", ChoStringSplitOptions.None, '\''))
            //    Console.WriteLine(ss + "-");
            //return;
            dynamic rec = new ExpandoObject();

            rec.Id   = 1;
            rec.Name = "Raj";

            using (var wr = new ChoCSVWriter("EmpOut.csv"))
            {
                wr.Write(new List <ExpandoObject>()
                {
                    rec
                });
            }
            return;

            ChoCSVRecordConfiguration config = new ChoCSVRecordConfiguration();

            //config.AutoDiscoverColumns = false;
            config.CSVFileHeaderConfiguration.HasHeaderRecord = true;
            config.ThrowAndStopOnMissingField = true;
            //config.MapRecordFields<EmployeeRec>();
            //config.RecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration("Id", 1));
            //config.RecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration("Name", 2));

            //dynamic row;
            //using (var stream = new MemoryStream())
            //using (var reader = new StreamReader(stream))
            //using (var writer = new StreamWriter(stream))
            //using (var parser = new ChoCSVReader(reader, config))
            //{
            //    writer.WriteLine("Id,Name");
            //    writer.WriteLine("1,Carl");
            //    writer.WriteLine("2,Mark");
            //    writer.Flush();
            //    stream.Position = 0;

            //    while ((row = parser.Read()) != null)
            //    {
            //        Console.WriteLine(row.Id);
            //    }
            //}
            //return;

            //DataTable dt = new ChoCSVReader<EmployeeRec>("Emp.csv").AsDataTable();
            //var z = dt.Rows.Count;
            //return;

            foreach (var e in new ChoCSVReader <EmployeeRec>("Emp.csv"))
            {
                Console.WriteLine(e.ToStringEx());
            }
            return;

            //var reader = new ChoCSVReader<EmployeeRec>("Emp.csv");
            //var rec = (object)null;

            //while ((rec = reader.Read()) != null)
            //    Console.WriteLine(rec.ToStringEx());

            //var config = new ChoCSVRecordConfiguration(typeof(EmployeeRec));
            //var e = new ChoCSVReader("Emp.csv", config);
            //dynamic i;
            //while ((i = e.Read()) != null)
            //    Console.WriteLine(i.Id);

            ChoETLFramework.Initialize();
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoCSVReader <EmployeeRec>(reader))
                        {
                            writer.WriteLine("Id,Name");
                            writer.WriteLine("1,Carl");
                            writer.WriteLine("2,Mark");
                            writer.Flush();
                            stream.Position = 0;
                            //var dr = parser.AsDataReader();
                            //while (dr.Read())
                            //{
                            //    Console.WriteLine(dr[0]);
                            //}
                            object row = null;

                            //parser.Configuration.ColumnCountStrict = true;
                            while ((row = parser.Read()) != null)
                            {
                                Console.WriteLine(row.ToStringEx());
                            }
                        }
        }
コード例 #27
0
ファイル: Program.cs プロジェクト: xman086/ChoETL
        public static void CustomNodeNameTest()
        {
            string xml1 = @"<Root>
  <Node1>
    <Id>1</Id>
    <FirstName>Tom</FirstName>
  </Node1>
  <Node2>
    <Id>2</Id>
    <FirstName>Mark</FirstName>
  </Node2>
</Root>";

            using (var r = ChoXmlReader.LoadText(xml1))
            {
                foreach (var rec in r)
                {
                    Console.WriteLine(rec.Dump());
                }
            }

            return;

            string csv = @"Id, First Name
1, Tom
2, Mark";

            StringBuilder xml = new StringBuilder();

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader())
            {
                using (var w = new ChoXmlWriter(xml)
                               .ErrorMode(ChoErrorMode.ThrowAndStop)
                               .Setup(s => s.CustomeNodeNameOverride += (o, e) =>
                {
                    e.NodeName = $"Node{e.Index}";
                })
                       )
                {
                    w.Write(r);
                }
            }

            Console.WriteLine(xml.ToString());

            //using (var reader = new ChoCSVReader("C:\\Server Media\\test3.csv")
            //    .WithFirstLineHeader()
            //    .Configure(c => c.FileHeaderConfiguration.IgnoreColumnsWithEmptyHeader = true)
            //    )
            //{
            //    using (var writer = new ChoXmlWriter(sb)
            //        .Configure(c => c.RootName = "Records")
            //        .Configure(c => c.NodeName = "Record")
            //        .Configure(c => c.EmptyXmlNodeValueHandling = ChoEmptyXmlNodeValueHandling.Empty)
            //        .Configure(c => c.ErrorMode = ChoErrorMode.ThrowAndStop)
            //        )
            //    {
            //        writer.Write(reader.Select(r =>
            //        {
            //            r.RenameKey("Company Name", "CompanyName");
            //            return r;
            //        }));
            //    }
            //}
        }
コード例 #28
0
ファイル: Program.cs プロジェクト: pookakat/RainPrediction
        static void PullMatches(string displayedDate)
        {
            var     reader = new ChoCSVReader("27612-precipitation-data.csv").WithFirstLineHeader();
            dynamic rec;

            while ((rec = reader.Read()) != null)
            {
                if (rec.DATE != null && rec.PRCP != null)
                {
                    string dataDate = rec.DATE;
                    dataDate = dataDate.Substring(0, dataDate.Length - 4);
                    if (dataDate == displayedDate)
                    {
                        int    count = 0;
                        string date  = rec.DATE;
                        string prcp  = rec.PRCP;
                        if (DatesSeen.Contains(date))
                        {
                            int    combine     = DatesSeen.IndexOf(date);
                            string checkAmount = Convert.ToString(combine);
                            if (DupeValues.Count != 0)
                            {
                                int primaryCount = DupeValues.Count;
                                for (int dupeCounter = 0; dupeCounter < DupeValues.Count; dupeCounter++)
                                {
                                    if (DupeValues[dupeCounter].Contains(checkAmount))
                                    {
                                        string   dupeString  = DupeValues[dupeCounter];
                                        string[] valuesArray = new string[2];
                                        valuesArray = dupeString.Split(",");
                                        int dupeNumber = Convert.ToInt32(valuesArray[1]);
                                        dupeNumber              = dupeNumber + 1;
                                        valuesArray[1]          = Convert.ToString(dupeNumber);
                                        dupeString              = string.Join(",", valuesArray);
                                        DupeValues[dupeCounter] = dupeString;
                                        int finalCount = DupeValues.Count;
                                        if (finalCount > primaryCount)
                                        {
                                            int subtractAmount = finalCount - primaryCount;
                                            DupeValues.RemoveAt(subtractAmount - 1);
                                        }
                                    }
                                    else
                                    {
                                        string dupeString = $"{checkAmount}, 1";
                                        DupeValues.Add(dupeString);
                                    }
                                }
                            }
                            else
                            {
                                string dupeString = $"{checkAmount}, 1";
                                DupeValues.Add(dupeString);
                            }

                            string recordedPrcp = RainSeen[combine];
                            double oldValue     = Convert.ToDouble(recordedPrcp);
                            double newValue     = Convert.ToDouble(prcp);
                            double rainTotal    = oldValue + newValue;
                            string newRain      = Convert.ToString(rainTotal);
                            RainSeen[combine] = newRain;
                        }
                        else
                        {
                            DatesSeen.Add(date);
                            RainSeen.Add(prcp);
                        }
                        count = DatesSeen.Count - 1;
                    }
                }
            }
            return;
        }
コード例 #29
0
        static void Main(string[] args)
        {
            var usda_nutrients    = new List <USDA_Nutrient>();
            var usda_servingSizes = new List <USDA_ServingSize>();

            var line = string.Empty;

            using (var file = new StreamReader(Path.Combine(AppContext.BaseDirectory, @"C:\Users\Micah.abc\OneDrive - Pronect Software\Documents\NutriInfo\v1\Raw\CSV\Nutrients.csv")))
            {
                while ((line = file.ReadLine()) != null)
                {
                    var p        = line.Split(',');
                    var nutrient = new USDA_Nutrient()
                    {
                        Id         = Guid.NewGuid().ToString(),
                        NDB_Number = p[0].Trim().Trim('"'),
                        Name       = p[2].Trim().Trim('"'),
                        Value      = p[4].Trim().Trim('"'),
                        Value_UOM  = p[5].Trim().Trim('"')
                    };

                    if (nutrient.Name == "Protein" || nutrient.Name == "Leucine")
                    {
                        usda_nutrients.Add(nutrient);
                    }
                }
            }

            line = string.Empty;
            using (var file = new StreamReader(Path.Combine(AppContext.BaseDirectory, @"C:\Users\Micah.abc\OneDrive - Pronect Software\Documents\NutriInfo\v1\Raw\CSV\Serving_Size.csv")))
            {
                while ((line = file.ReadLine()) != null)
                {
                    var p = line.Split(',');
                    usda_servingSizes.Add(new USDA_ServingSize()
                    {
                        Id              = Guid.NewGuid().ToString(),
                        NDB_Number      = p[0].Trim().Trim('"'),
                        ServingSize     = p[1].Trim().Trim('"'),
                        ServingSize_UOM = p[2].Trim().Trim('"')
                    });
                }
            }

            using (var reader = new ChoCSVReader(@"C:\Users\Micah.abc\OneDrive - Pronect Software\Documents\NutriInfo\v1\Raw\CSV\Products.csv"))
            {
                foreach (dynamic chooitem in reader)
                {
                    var usda_food = new USDA_Food()
                    {
                        Id           = Guid.NewGuid().ToString(),
                        NDB_Number   = chooitem.ValuesArray[0].Replace('"', ' ').Trim().Trim('"'),
                        Name         = chooitem.ValuesArray[1].Trim().Replace('"', ' ').Trim('"'),
                        UPC          = chooitem.ValuesArray[3].Trim().Replace('"', ' ').Trim('"'),
                        Manufacturer = chooitem.ValuesArray[4].Trim().Replace('"', ' ').Trim('"')
                    };

                    var leucineMg = usda_nutrients.FirstOrDefault(n => n.NDB_Number == usda_food.NDB_Number && n.Name == "Leucine");
                    var proteinMg = usda_nutrients.FirstOrDefault(n => n.NDB_Number == usda_food.NDB_Number && n.Name == "Protein");
                    var weightGm  = usda_servingSizes.FirstOrDefault(n => n.NDB_Number == usda_food.NDB_Number);

                    if ((leucineMg != null || proteinMg != null) && weightGm != null && !string.IsNullOrEmpty(weightGm.ServingSize) && !string.IsNullOrEmpty(usda_food.Manufacturer))
                    {
                        var food = new Food()
                        {
                            Id           = usda_food.Id,
                            Created      = DateTime.Now,
                            Name         = usda_food.Name.Replace(",", " ").ToLower().Transform(To.TitleCase),
                            WeightGrams  = double.Parse(weightGm.ServingSize),
                            Manufacturer = usda_food.Manufacturer.Replace(",", " ").ToLower().Transform(To.TitleCase)
                        };

                        if (leucineMg != null)
                        {
                            food.LeucineMilligrams = double.Parse(leucineMg.Value);
                        }

                        if (proteinMg != null)
                        {
                            food.ProteinGrams = double.Parse(proteinMg.Value);
                        }

                        if (File.Exists(@"C:\Output\Output.csv"))
                        {
                            using (var tw = new StreamWriter(@"C:\Output\Output.csv", true))
                            {
                                tw.WriteLine(food.Id + "," + "2019-07-02 00:00:00" + "," + "2019-07-02 00:00:00" + "," + food.Name + "," + food.ProteinGrams + "," + food.LeucineMilligrams + "," + food.WeightGrams + "," + food.Manufacturer);
                            }
                        }
                    }
                }
            }
        }
コード例 #30
0
        public static Dictionary <string, string> ParseData(string dataString)
        {
            Dictionary <string, string> returnData = new Dictionary <string, string>();

            returnData.Add("startDate", "");
            returnData.Add("endDate", "");
            returnData.Add("newCasesToday", "");
            returnData.Add("newCaseFortnightAverage", "");
            returnData.Add("deathFortnightAverage", "");

            // Data string is csv, parse to JSON instead
            StringBuilder stringData = new StringBuilder();

            stringData.Append("{\"data\":");
            using (var p = ChoCSVReader.LoadText(dataString).WithFirstLineHeader()) {
                using (var w = new ChoJSONWriter(stringData)) {
                    w.Write(p);
                }
            }
            stringData.Append("}");

            JObject dataObject             = JObject.Parse(stringData.ToString());
            JToken  dataToken              = dataObject["data"];
            JEnumerable <JToken> dataUnits = dataToken.Children();

            List <dataPoint> dataPoints = new List <dataPoint>();
            int newCaseCount;
            int deathCount;

            foreach (JToken token in dataUnits)
            {
                // Filter out any data that's not for Vic
                if (token.SelectToken("state").ToString() != "\\\"Victoria\\\"")
                {
                    continue;
                }

                Int32.TryParse(token.SelectToken("confirmed").ToString(), out newCaseCount);
                Int32.TryParse(token.SelectToken("deaths").ToString(), out deathCount);

                dataPoints.Add(new dataPoint {
                    dateTime     = DateTime.Parse(token.SelectToken("date").ToString()),
                    newCaseCount = newCaseCount,
                    deathCount   = deathCount
                });
            }

            dataPoint[] dataArray = dataPoints.ToArray();

            int    index = dataArray.Length - 1;
            double newCaseFortnightAverage = 0;
            double deathFortnightAverage   = 0;

            for (int i = 0; i < 13; i++)
            {
                newCaseCount             = dataArray[index - i].newCaseCount;
                newCaseFortnightAverage += newCaseCount;
                deathCount             = dataArray[index - i].deathCount;
                deathFortnightAverage += deathCount;
            }

            returnData["newCaseFortnightAverage"] = Math.Round(newCaseFortnightAverage / 14, 1).ToString();
            returnData["deathFortnightAverage"]   = Math.Round(deathFortnightAverage / 14, 1).ToString();
            returnData["endDate"]       = dataArray[index].dateTime.ToString("dddd, dd MMMM yyyy");
            returnData["startDate"]     = dataArray[index - 13].dateTime.ToString("dddd, dd MMMM yyyy");
            returnData["newCasesToday"] = dataArray[index].newCaseCount.ToString();

            return(returnData);
        }