示例#1
0
        static void ConfigFirstApproachReadAsTypedRecords()
        {
            ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration();

            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Id", 0, 8)
            {
                FieldType = typeof(int)
            });
            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 8, 10)
            {
                FieldType = typeof(string)
            });

            EmployeeRecSimple row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader <EmployeeRecSimple>(reader, config).WithFirstLineHeader())
                        {
                            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.ToStringEx());
                            }
                        }
        }
示例#2
0
        static void CodeFirstWithDeclarativeApproach()
        {
            object row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader <CreditBalanceRecord>(reader))
                        {
                            writer.WriteLine("Account LastName        FirstName       Balance     CreditLimit   AccountCreated  Rating ");
                            writer.WriteLine("101     Reeves          Keanu           9315.45     10000.00      1/17/1998       A      ");
                            writer.Flush();
                            stream.Position = 0;

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

            //using (var stream = new MemoryStream())
            //using (var reader = new StreamReader(stream))
            //using (var writer = new StreamWriter(stream))
            //{
            //    writer.WriteLine("Account LastName        FirstName       Balance     CreditLimit   AccountCreated  Rating ");
            //    writer.WriteLine("101     Reeves          Keanu           9315.45     10000.00      1/17/1998       A      ");
            //    writer.Flush();
            //    stream.Position = 0;

            //    foreach (var item in new ChoFixedLengthReader<CreditBalanceRecord>(reader))
            //    {
            //        Console.WriteLine(item.ToStringEx());
            //    }
            //}
        }
示例#3
0
        static void DynamicApproach()
        {
            object row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader(reader)
                                            .WithFirstLineHeader()
                                            .WithField("Account", 0, 8, fieldType: typeof(int))
                                            .WithField("LastName", 8, 16)
                                            .WithField("FirstName", 24, 16)
                                            .WithField("Balance", 40, 12, fieldType: typeof(double))
                                            .WithField("CreditLimit", 52, 14, fieldType: typeof(double))
                                            .WithField("AccountCreated", 66, 16, fieldType: typeof(DateTime))
                                            .WithField("Rating", 82, 7))
                        {
                            writer.WriteLine("Account LastName        FirstName       Balance     CreditLimit   AccountCreated  Rating ");
                            writer.WriteLine("101     Reeves          Keanu           9315.45     10000.00      1/17/1998       A      ");
                            writer.WriteLine("102     Tom             Mark            9315.45     15000.00      12/17/2000      A      ");
                            writer.Flush();
                            stream.Position = 0;

                            while ((row = parser.Read()) != null)
                            {
                                Console.WriteLine(row.ToStringEx());
                            }
                        }
        }
示例#4
0
        static void LoadTextTest()
        {
            string txt = "Id      Name      \r\n1       Carl      \r\n2       Mark      ";

            foreach (var e in ChoFixedLengthReader.LoadText(txt).WithFirstLineHeader())
            {
                Console.WriteLine(e.ToStringEx());
            }
        }
示例#5
0
        static void MultiLineTest()
        {
            object row = null;

            using (var parser = new ChoFixedLengthReader("Emp.csv").WithFirstLineHeader().WithField("Id", 0, 8).WithField("Name", 8, 10, true))
            {
                while ((row = parser.Read()) != null)
                {
                    Console.WriteLine(row.ToStringEx());
                }
            }
        }
示例#6
0
        static void MultiLineTest()
        {
            object row = null;

            using (var parser = new ChoFixedLengthReader("Emp.txt").WithFirstLineHeader().WithField("Id", 0, 8).WithField("Name", 8, 10))
            {
                parser.Configuration.MayContainEOLInData = true;
                while ((row = parser.Read()) != null)
                {
                    Console.WriteLine(row.ToStringEx());
                }
            }
        }
示例#7
0
        static void Test1()
        {
            string txt = @"Filip    Malýn        Male  1218-02-1994
Božena   Němcová      Female1804-02-1820
Jan      Žižka        Male  0719-09-1360
Che      Guevara      Male  2714-06-1928
AntoinedeSaint-ExupéryMale  1529-06-1900";

            foreach (var rec in ChoFixedLengthReader <Person> .LoadText(txt))
            {
                Console.WriteLine(rec.Dump());
            }
        }
示例#8
0
        static void POCODataTableTest()
        {
            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader <CreditBalanceRecord>(reader))
                        {
                            writer.WriteLine("Account LastName        FirstName       Balance     CreditLimit   AccountCreated  Rating ");
                            writer.WriteLine("101     Reeves          Keanu           9315.45     10000.00      1/17/1998       A      ");
                            writer.Flush();
                            stream.Position = 0;

                            var dt = parser.AsDataTable();
                        }
        }
示例#9
0
        static void DefaultValueUsedViaConfigFirstApproach()
        {
            ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration();

            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Id", 0, 3)
            {
                FieldType = typeof(int)
            });
            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 3, 5)
            {
                FieldType = typeof(string)
            });
            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("JoinedDate", 8, 10)
            {
                FieldType = typeof(DateTime), DefaultValue = "10/10/2010"
            });
            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Salary", 18, 10)
            {
                FieldType = typeof(ChoCurrency)
            });
            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("IsActive", 28, 1)
            {
                FieldType = typeof(bool)
            });
            config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Status", 29, 1)
            {
                FieldType = typeof(char)
            });
            config.ErrorMode = ChoErrorMode.ReportAndContinue;

            ExpandoObject row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader(reader, config))
                        {
                            writer.WriteLine("001Carl 08/12/2016100,000   0F");
                            writer.WriteLine("002MarkS13/01/2010500,000   1C");
                            writer.Flush();
                            stream.Position = 0;

                            while ((row = parser.Read()) != null)
                            {
                                Console.WriteLine(row.ToStringEx());
                            }
                        }
        }
示例#10
0
 static void QuickLoad()
 {
     using (var r = new ChoFixedLengthReader("accounts.txt")
                    .WithField("AC", 0, 8, fieldType: typeof(int))
            )
     {
         //r.RecordLoadError += (o, e) =>
         //{
         //    Console.WriteLine(e.Exception.Message);
         //    e.Handled = true;
         //};
         foreach (var rec in r)
         {
             Console.WriteLine("{0}", rec.AC);
         }
     }
 }
示例#11
0
        static void Test2()
        {
            string txt = @"ID   Name      
1    Mark      
2    Tom       ";

            foreach (var rec in ChoFixedLengthReader <Emp1> .LoadText(txt)
                     //.WithRecordLength(15)
                     //.WithField("ID", startIndex: 0, size: 5)
                     //.WithField("Name1", startIndex: 5, size: 10)
                     .WithFirstLineHeader(true)
                     //.WithHeaderLineAt(2, false)
                     )
            {
                Console.WriteLine(rec.Dump());
            }
        }
示例#12
0
 static void QuickLoad()
 {
     using (var r = new ChoFixedLengthReader("accounts.txt").WithFirstLineHeader()
                    .Configure(c => c.MaxScanRows = 2)
            )
     {
         //r.RecordLoadError += (o, e) =>
         //{
         //    Console.WriteLine(e.Exception.Message);
         //    e.Handled = true;
         //};
         foreach (dynamic rec in r)
         {
             Console.WriteLine("{0}", rec.Dump());
         }
     }
 }
示例#13
0
        static void DefaultValueUsedViaCodeFirstApproach()
        {
            EmployeeRecSimple row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader <EmployeeRecSimple>(reader))
                        {
                            writer.WriteLine("001Carl 08/12/2016$100,000                      0F");
                            writer.WriteLine("002MarkS01/01/2010$500,000                      1C");
                            writer.Flush();
                            stream.Position = 0;

                            while ((row = parser.Read()) != null)
                            {
                                Console.WriteLine(row.ToStringEx());
                            }
                        }
        }
示例#14
0
        static void QuickTest()
        {
            object row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader <EmployeeRecWithCurrency>(reader).WithFirstLineHeader())
                        {
                            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.ToStringEx());
                            }
                        }
        }
示例#15
0
        static void CodeFirstWithDeclarativeApproachRead()
        {
            EmployeeRec row = null;

            using (var stream = new MemoryStream())
                using (var reader = new StreamReader(stream))
                    using (var writer = new StreamWriter(stream))
                        using (var parser = new ChoFixedLengthReader <EmployeeRec>(reader).WithFirstLineHeader())
                        {
                            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.ToStringEx());
                            }
                        }
        }
示例#16
0
 public static void AABillingTest()
 {
     using (var p = new ChoFixedLengthReader("AABilling.txt")
                    .WithRecordSelector(0, 1, null, typeof(AABillingDetailRecord), typeof(AABillingTrailerRecord), typeof(AABillingHeaderRecord))
                    //.WithCustomRecordSelector((l) =>
                    //{
                    //	Tuple<long, string> kvp = l as Tuple<long, string>;
                    //	if (kvp.Item2.StartsWith("H"))
                    //		return typeof(AABillingHeaderRecord);
                    //	else if (kvp.Item2.StartsWith("T"))
                    //		return typeof(AABillingTrailerRecord);
                    //	else
                    //		return typeof(AABillingDetailRecord);
                    //})
            )
     {
         foreach (var rec in p)
         {
             Console.WriteLine(ChoUtility.Dump(rec));
         }
     }
 }
示例#17
0
文件: Program.cs 项目: ooqcc/ChoETL
 static void QuickLoad()
 {
     for (int i = 0; i < 5; i++)
     {
         Stopwatch sw = Stopwatch.StartNew();
         using (var r = new ChoFixedLengthReader("accounts.txt")
                        //.WithFirstLineHeader()
                        //.Configure(c => c.MaxScanRows = 2)
                )
         {
             //r.RecordLoadError += (o, e) =>
             //{
             //    Console.WriteLine(e.Exception.Message);
             //    e.Handled = true;
             //};
             foreach (dynamic rec in r)
             {
                 //Console.WriteLine("{0}", rec.Dump());
             }
         }
         sw.Stop();
         Console.WriteLine(sw.Elapsed.TotalSeconds);
     }
 }
示例#18
0
 static void QuickDataTableTest()
 {
     var dt = new ChoFixedLengthReader("accounts.txt").AsDataTable();
 }