예제 #1
0
        public static void ExternalSortTest()
        {
            string csv = @"Id, Name, City
1, Tom, NY
2, Mark, NJ
3, Lou, FL
4, Smith, PA
5, Raj, DC
";

            StringBuilder csvOut = new StringBuilder();

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                   )
            {
                using (var w = new ChoCSVWriter(csvOut)
                               .WithFirstLineHeader()
                       )
                {
                    w.Write(r.ExternalSort((e1, e2) => String.Compare(e1.Name, e2.Name)));
                }
            }

            Console.WriteLine(csvOut.ToString());
        }
예제 #2
0
        public IActionResult Index()
        {
            if (HybridSupport.IsElectronActive)
            {
                Electron.IpcMain.On("select-directory", async(args) => {
                    var mainWindow = Electron.WindowManager.BrowserWindows.First();
                    var options    = new OpenDialogOptions
                    {
                        Properties = new OpenDialogProperty[] {
                            OpenDialogProperty.openFile
                        }
                    };


                    string[] files = await Electron.Dialog.ShowOpenDialogAsync(mainWindow, options);

                    string csv       = System.IO.File.ReadAllText(files[0]);
                    StringBuilder sb = new StringBuilder();
                    using (var p = ChoCSVReader.LoadText(csv)
                                   .WithFirstLineHeader()
                           )
                    {
                        using (var w = new ChoJSONWriter(sb))
                            w.Write(p);
                    }
                    string json = sb.ToString();
                    Electron.IpcMain.Send(mainWindow, "select-directory-reply", json);
                });
            }
            return(View());
        }
예제 #3
0
        static void WriteDataTableTest()
        {
            string csv = @"Id, Name
1, Tom
2, Mark";

            StringBuilder yaml = new StringBuilder();

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

                using (var w = new ChoYamlWriter(yaml)
                               //.ReuseSerializerObject(false)
                               .UseYamlSerialization(true)
                       )
                {
                    w.Write(dt);
                }
            }

            using (var r = ChoYamlReader.LoadText(yaml.ToString())
                   )
            {
                r.AsDataTable().Print();
            }

            Console.WriteLine(yaml.ToString());
        }
예제 #4
0
        public StockInfo GetStockInfo(string command)
        {
            if (!command.StartsWith("/"))
            {
                throw new InvalidCommandExpressionException();
            }

            command = command.Substring(1);

            var commandContext = GetCommandContext(command);

            if (!IsValidCommand(commandContext.Command))
            {
                throw new InvalidCommandException();
            }

            var stockUri = $"https://stooq.com/q/l/?s={commandContext.Argument}&f=sd2t2ohlcv&h&e=csv";

            var stockCsv = _webClient.DownloadString(stockUri);

            var stockInfo = ChoCSVReader <StockInfo> .LoadText(stockCsv).WithFirstLineHeader().First();

            if (stockInfo.Date == DateTime.MinValue)
            {
                throw new InvalidStockArgumentException();
            }

            return(stockInfo);
        }
예제 #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var date = Request.QueryString["date"];

            if (string.IsNullOrEmpty(date))
            {
                date = DateTime.Now.AddDays(-1).ToString("dd/MM/yyyy");
            }
            var wc     = new WebClient();
            var strUrl =
                "http://www.airqualityni.co.uk/data/download-data?ds[p][sqid]=76139&ds[p][format]=csv&ds[p][type]=Daily&ds[p][current-selector]=site&ds[s][parameter-group][0]=4&ds[s][measurement-type][0]=step1&ds[s][pollutant][0]=O3&ds[s][pollutant][1]=NO&ds[s][pollutant][2]=NO2&ds[s][pollutant][3]=NOXasNO2&ds[s][pollutant][4]=SO2&ds[s][pollutant][5]=CO&ds[s][pollutant][6]=GE10&ds[s][pollutant][7]=NV10&ds[s][pollutant][8]=V10&ds[s][pollutant][9]=PM25&ds[s][pollutant][10]=NV25&ds[s][pollutant][11]=V25&ds[s][pollutant][12]=GR10&ds[s][pollutant][13]=GR25&ds[s][pollutant][14]=13BDIENE&ds[s][pollutant][15]=BENZENE&ds[s][pollutant][16]=M_DIR&ds[s][pollutant][17]=M_SPED&ds[s][pollutant][18]=M_T&ds[s][statistic-type][0]=12&ds[s][date-range][start]={0}&ds[s][date-range][finish]={1}&ds[s][region][0]=415&ds[s][region][1]=416&ds[s][region][2]=419&ds[s][region][3]=421&ds[s][region][4]=425&ds[s][region][5]=426&ds[s][region][6]=428&ds[s][region][7]=430&ds[s][region][8]=431&ds[s][region][9]=434&ds[s][region][10]=435&ds[s][region][11]=436&ds[s][region][12]=438&ds[s][site][0]=9999";

            strUrl = string.Format(strUrl, date, date);
            var strCsv = wc.DownloadString(strUrl);
            var sb     = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(strCsv)
                           .WithFirstLineHeader()
                   )
            {
                using (var w = new ChoJSONWriter(sb))
                    w.Write(p);
            }

            Response.ContentType = "application/json";
            Response.AppendHeader("Access-Control-Allow-Origin", "*");
            Response.Write(sb.ToString());
        }
예제 #6
0
        static void CSVToJSON1()
        {
            string csv = @"""""|""Rep Employee Name""|""Ship To Customer Number""|""""|""Ship To Customer Name""|""Patient Last Name""|""Patient First Name""|""Patient Location""|""""|""""|""""|""""|""Serial Number""|""Product Description -Used""
"""" | ""CHRISTMAN, AMY"" | ""580788"" | ""4543"" | ""dfgfdgfdgdfgdfsgfdgdfg"" | """" | """" | """" | ""6025"" | ""5/13/2002 12:45:00 PM"" | ""5/13/2002 2:59:00 PM"" | ""7/2/2002 10:15:44 AM"" | """" | ""VAC""
""34534534634"" | ""NAGORNY, WILLIAM"" | ""3453"" | ""363463"" | ""345435435"" | """" | """" | """" | ""6079"" | ""5/15/2002 7:39:51 AM"" | ""3/20/2002 11:00:00 AM"" | ""9/25/2002 8:18:32 AM"" | """" | ""VAC""
""34634643634"" | ""MOORE, NICHOLAS (NICHO"" | ""654287"" | ""98188"" | ""asdfdsfdfasasdf"" | """" | """" | """" | ""6007"" | ""5/31/2002 2:45:16 PM"" | ""5/31/2002 3:51:00 PM"" | ""9/10/2002 10:51:55 AM"" | """" | ""VAC""";

            StringBuilder json = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(csv)
                           .WithDelimiter("|")
                           .WithFirstLineHeader()
                           .Configure(c => c.FileHeaderConfiguration.IgnoreColumnsWithEmptyHeader = true)
                           .Configure(c => c.QuoteAllFields = true)
                           .Configure(c => c.NullValue = "")
                   )
            {
                using (var w = new ChoJSONWriter(json)
                               //.Configure(c => c.IgnoreFieldValueMode = ChoIgnoreFieldValueMode.Any)
                               .Configure(c => c.NullValueHandling = ChoNullValueHandling.Ignore)
                       )
                {
                    w.Write(p);
                }
            }

            Console.WriteLine(json.ToString());
        }
예제 #7
0
        private DataTable CreateTableEtl(string csv)
        {
            string[]  headers     = null;
            string[]  columntypes = null;
            DataTable dt          = new DataTable();

            using (var reader = ChoCSVReader.LoadText(ConvertToWindowsEOL(csv), new ChoCSVRecordConfiguration()
            {
                MaxLineSize = int.MaxValue / 5,
            }).WithFirstLineHeader().QuoteAllFields())
            {
                reader.Configuration.MayContainEOLInData = true;
                int rowIdx = 0;
                ChoDynamicObject e;

                while ((e = reader.Read()) != null)
                {
                    if (rowIdx == 0)
                    {
                        headers     = e.Keys.ToArray();
                        columntypes = e.Values.Select(p => p.ToString()).ToArray();
                        rowIdx      = rowIdx + 1;

                        for (int i = 0; i < headers.Length; i++)
                        {
                            dt.Columns.Add(headers[i], Type.GetType($"System.{columntypes[i]}", false, true));
                        }
                        continue;
                    }


                    DataRow dr = dt.NewRow();

                    var columns = e.Values.ToList();
                    for (int i = 0; i < headers.Length; i++)
                    {
                        var cleaned = columns[i]?.ToString();
                        if (string.IsNullOrWhiteSpace(cleaned))
                        {
                            dr[i] = DBNull.Value;
                        }
                        else if (string.Equals(columntypes[i], "byte[]", StringComparison.InvariantCultureIgnoreCase))
                        {
                            dr[i] = HexStringToByteArray(cleaned);
                        }
                        else
                        {
                            dr[i] = cleaned;
                        }
                    }

                    dt.Rows.Add(dr);
                }
            }


            return(dt);
        }
예제 #8
0
        static void LoadTextTest()
        {
            string txt = "Id, Name\r\n1, Mark";

            foreach (var e in ChoCSVReader.LoadText(txt).WithFirstLineHeader())
            {
                Console.WriteLine(ChoUtility.ToStringEx(e));
            }
        }
예제 #9
0
 static void CreateParquetFile(string parquetFilePath, string csv)
 {
     using (var r = ChoCSVReader.LoadText(csv)
                    .WithFirstLineHeader()
            )
     {
         using (var w = new ChoParquetWriter(parquetFilePath))
             w.Write(r);
     }
 }
예제 #10
0
        public void CSV_To_Json_Data_Load(string csvSource, string jsonDestination)
        {
            string        csvData       = File.ReadAllText(csvSource);
            StringBuilder stringBuilder = new StringBuilder();

            using (var jsonDataValue = ChoCSVReader.LoadText(csvData).WithFirstLineHeader())
            {
                using (var data = new ChoJSONWriter(stringBuilder)) data.Write(jsonDataValue);
            }
            File.WriteAllText(jsonDestination, stringBuilder.ToString());
        }
예제 #11
0
        public void POCOTest1()
        {
            string csv = @"Id, Name
1, Raj
, ";

            foreach (var rec in ChoCSVReader <EmployeeRec> .LoadText(csv))
            {
                Trace.WriteLine(rec.ToString());
            }
            Assert.IsTrue(true);
        }
예제 #12
0
        public void CSVToJson_Data_Load_And_Sort_By_Numeric_key(string csvSource, string jsonDestination, string sortJson, string key)
        {
            string        csvData       = File.ReadAllText(csvSource);
            StringBuilder stringBuilder = new StringBuilder();

            using (var jsonDataValue = ChoCSVReader.LoadText(csvData).WithFirstLineHeader())
            {
                using (var data = new ChoJSONWriter(stringBuilder)) data.Write(jsonDataValue);
            }
            File.WriteAllText(jsonDestination, stringBuilder.ToString());
            obj.SortingForCSVFileForNum(jsonDestination, sortJson, key);
        }
예제 #13
0
        //// Method Convert Csv file to Json file
        public static void ConvertCsvFileToJsonObject(string cSVFile, string jsonFile)
        {
            string        reader = File.ReadAllText(cSVFile);
            StringBuilder sb     = new StringBuilder();

            using (var value = ChoCSVReader.LoadText(reader).WithFirstLineHeader())
            {
                using var w = new ChoJSONWriter(sb);
                w.Write(value);
            }
            File.WriteAllText(jsonFile, sb.ToString());
        }
예제 #14
0
        //Loads a CSV up and converts/outputs it to a Json file
        private void WriteCSVToJson(string path, string outputName)
        {
            var csv = File.ReadAllText(path);

            StringBuilder json = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(csv).WithFirstLineHeader(false).ThrowAndStopOnMissingField(false).QuoteAllFields(true).IgnoreFieldValueMode(ChoIgnoreFieldValueMode.None))
            {
                using (var w = new ChoJSONWriter(json))
                    w.Write(p);
            }

            File.WriteAllText(outputName, json.ToString(), Encoding.UTF8);
        }
예제 #15
0
        public void CSVStateCensusJsonDataLoad()
        {
            StateCensusAnalyser obj = new StateCensusAnalyser();
            string path             = @"D:\Anoop_kumar\CensusAnalyzer\CensusAnalyzer\File\StateCensusData.csv";
            //obj.SortingForCSVFile(path, "State");
            string        csvData       = File.ReadAllText(path);
            StringBuilder stringBuilder = new StringBuilder();

            using (var jsonDataValue = ChoCSVReader.LoadText(csvData).WithFirstLineHeader())
            {
                using (var data = new ChoJSONWriter(stringBuilder)) data.Write(jsonDataValue);
            }
            File.WriteAllText(@"D:\Anoop_kumar\CensusAnalyzer\CensusAnalyzer\StateCensusData.json", stringBuilder.ToString());
        }
예제 #16
0
        //[Test]
        public void POCOTest1()
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("us-en");

            string csv = @"Id, Name
1, Raj
, ";

            foreach (var rec in ChoCSVReader <EmployeeRec> .LoadText(csv))
            {
                Trace.WriteLine(rec.ToString());
            }
            Assert.IsTrue(true);
        }
예제 #17
0
        private Task ReadFromFileAsync(string filename)
        {
            return(Task.Run(() => {
                string csv = File.ReadAllText(filename);
                StringBuilder sb = new StringBuilder();
                using (var p = ChoCSVReader.LoadText(csv)
                               .WithFirstLineHeader()
                       )
                {
                    using (var w = new ChoJSONWriter(sb))
                        w.Write(p);
                }

                _charges = JsonConvert.DeserializeObject <List <FuelCharge> >(sb.ToString());
            }));
        }
예제 #18
0
        public static JObject GetCsvToJson(string location)
        {
            StringBuilder sb = new StringBuilder( );

            using (var p = ChoCSVReader.LoadText(location)
                           .WithFirstLineHeader( )
                   )
            {
                using (var w = new ChoJSONWriter(sb))
                    w.Write(p);
            }
            JArray  jsonArray = JArray.Parse(sb.ToString( ));
            JObject json      = JObject.Parse(jsonArray[1].ToString( ));

            return(json);
        }
예제 #19
0
        static void StageCSVFile()
        {
            string csv = @"Id, Name, City
1, Tom, NY
2, Mark, NJ
3, Lou, FL
4, Smith, PA
5, Raj, DC
";

            using (var r = ChoCSVReader <Emp> .LoadText(csv)
                           .WithFirstLineHeader())
            {
                r.StageOnSQLite();
            }
        }
예제 #20
0
파일: Program.cs 프로젝트: xman086/ChoETL
        static void CSVArrayToParquet()
        {
            string csv = @"id,name,friends/0,friends/1
1,Tom,Dick,Harry";

            using (var r = ChoCSVReader.LoadText(csv).WithFirstLineHeader()
                           //.Configure(c => c.AutoArrayDiscovery = true)
                           //.Configure(c => c.ArrayIndexSeparator = '/')
                   )
            {
                using (var w = new ChoParquetWriter("CSVArrayToParquet.parquet"))
                {
                    w.Write(r);
                }
            }
        }
예제 #21
0
        //Coverting CSV To JSON
        public void ConvertingCSVToJSON(string path, string destination)
        {
            //Read CSV Data
            string csv = File.ReadAllText(path);

            StringBuilder builder = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(csv).WithFirstLineHeader())
            {
                var w = new ChoJSONWriter(builder);
                w.Write(p);
            }

            //Data Storing In Destination Path(File)
            File.WriteAllText(destination, builder.ToString());
        }
예제 #22
0
        /// <summary>
        /// Sorts the CSV file write in json and return number of states sorted.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="jsonFilepath">The json filepath.</param>
        /// <param name="key">The key.</param>
        /// <returns></returns>
        public static int SortCSVFileOnNumberAndWriteInJsonAndReturnNumberOfStatesSorted(string filePath, string jsonFilepath, string key)
        {
            string        re = File.ReadAllText(filePath);
            StringBuilder sb = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(re)
                           .WithFirstLineHeader()
                   )
            {
                using (var w = new ChoJSONWriter(sb))
                    w.Write(p);
            }
            File.WriteAllText(jsonFilepath, sb.ToString());
            int count = CSVOperations.SortJsonBasedOnKeyAndReturnNumberOfStatesSorted(jsonFilepath, key);

            return(count);
        }
        //Method to sorting the least populated state.

        public static string ReturnDataNumberOfStatesSortLowestCSVFileAndWriteInJson(string filePath, string jsonFilepath, string key)
        {
            string        readFile      = File.ReadAllText(filePath);
            StringBuilder stringbuilder = new StringBuilder();

            using (var reader = ChoCSVReader.LoadText(readFile)
                                .WithFirstLineHeader())
            {
                using (var writer = new ChoJSONWriter(stringbuilder)) writer.Write(reader);
            }
            File.WriteAllText(jsonFilepath, stringbuilder.ToString());
            JArray array     = CsvStateCensusReadRecord.SortJsonBasedOnKeyAndValueIsNumber(jsonFilepath, key);
            var    jsonArray = JsonConvert.SerializeObject(array, Formatting.Indented);

            File.WriteAllText(jsonFilepath, jsonArray);
            return(CsvStateCensusReadRecord.RetriveFirstDataOnKey(jsonFilepath, key));
        }
예제 #24
0
        public string ConvertToJson()
        {
            string path = Mapper.MapFile("~/input_cut.csv");
            var    csv  = File.ReadAllText(path);

            StringBuilder sb = new StringBuilder();

            using (var p = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                   )
            {
                using (var w = new ChoJSONWriter(sb))
                    w.Write(p);
            }

            return(sb.ToString());
        }
예제 #25
0
파일: Program.cs 프로젝트: xman086/ChoETL
        static void QuickTest()
        {
            string csv = @"Id, Name
1, Tom
2, Mark";

            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                           .WithMaxScanRows(2)
                           .QuoteAllFields()
                   )
            {
                using (var w = new ChoParquetWriter("quicktest.parquet"))
                {
                    w.Write(r);
                }
            }
        }
예제 #26
0
        /// <summary>
        /// Method to write the last state data using json
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="jsonFilepath"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string ReturnLastDataAfterSortingCsvFileWriteInJson(string filePath, string jsonFilepath, string key)
        {
            string        readFile      = File.ReadAllText(filePath);
            StringBuilder stringbuilder = new StringBuilder();

            using (var loadText = ChoCSVReader.LoadText(readFile)
                                  .WithFirstLineHeader())
            {
                using (var writer = new ChoJSONWriter(stringbuilder)) writer.Write(loadText);
            }
            File.WriteAllText(jsonFilepath, stringbuilder.ToString());
            JArray array = CensusAnalyser.SortingJsonBasedOnKey(jsonFilepath, key);
            // serialize JSON to a string and then write string to a file
            var jsonArray = JsonConvert.SerializeObject(array, Formatting.Indented);

            File.WriteAllText(jsonFilepath, jsonArray);
            return(CensusAnalyser.RetriveLastDataOnKey(jsonFilepath, key));
        }
예제 #27
0
        public void SaveHiscores(string CsvString, string PlayerName)
        {
            // Sets up the initialization of StringBuilder which we will use to make the json
            StringBuilder sb = new StringBuilder();

            // Loads the csv string and does some setup methods to prevent it from f*****g up.
            try
            {
                using (var p = ChoCSVReader.LoadText(CsvString).Setup(q => q.DoWhile += (o, e) =>
                {
                    // get the source eg the string.
                    string line = e.Source as string;
                    Debug.WriteLine(line);
                    // Stop processing the string when a -1 is encountered. This is so the program doesn't break
                    // If there is a -1,-1 in the CSV instead of a -1,-1,-1 as there are three headers.
                    e.Stop = line.EndsWith(" -1,-1 ");
                })
                               // Sets up the three headers which the values will be listed under.
                               .WithField("Rank", position: 1)
                               .WithField("Level", position: 2)
                               .WithField("Total XP", position: 3)
                       )
                {
                    using (var w = new ChoJSONWriter(sb))
                    {
                        // Gets the current directory of the .exe and then the Players folder inside of that.
                        string Folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Players\";

                        //Create "Players" Directory if it doesn't already exist.
                        Directory.CreateDirectory(Folder);

                        using (var parser = new ChoJSONWriter(Folder + PlayerName + ".json"))
                        {
                            // Writes all the information that the variable p holds
                            // In this case the complete CSV -> Json conversion
                            parser.Write(p);
                        }
                    }
                }
            }
            catch (Exception e)
            {
            }
        }
예제 #28
0
        static void NestedObjectTest()
        {
            string csv = @"AccountId, Name, Jan, Feb, Mar, Dec
1, Anne, 1000.00, 400.00, 500.00,200.00
2, John, 900.00, 500.00, 500.00,1200.00
3, Brit, 600.00, 600.00, 500.00,2200.00";

            StringBuilder sb = new StringBuilder();

            using (var p = ChoCSVReader <AccountBalance> .LoadText(csv)
                           .WithFirstLineHeader(true)
                           .WithField(m => m.lastTwelveMonths, valueSelector: v =>
            {
                List <string> list = new List <string>();
                //list.Add(v.Column5);
                list.Add(v.Jan);
                list.Add(v.Feb);
                list.Add(v.Mar);
                list.Add(v.Dec);
                return(list);
            })
                   )
            {
                var x = p.ToArray();

                using (var w = new ChoFixedLengthWriter <AccountBalance>(sb)
                               .WithFirstLineHeader()
                               .WithField("ID", 1, 5)
                               .WithField("Name", 6, 5)
                               .WithField(f => f.lastTwelveMonths, 10, 5, fieldName: "Mon,Tue", valueSelector: v =>
                {
                    return("1,2");
                })
                       )
                {
                    w.Write(p);
                }

                //foreach (var rec in p)
                //    Console.WriteLine(rec.Dump());
            }

            Console.WriteLine(sb.ToString());
        }
예제 #29
0
파일: UnitTest1.cs 프로젝트: ywscr/ChoETL
        public void AsDataReaderTest()
        {
            string csv = @"Id, Name 
2, Tom
                3, ";

            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);
        }
예제 #30
0
파일: Program.cs 프로젝트: xman086/ChoETL
        static void Test1()
        {
            string csv = @"Cust_ID,CustName,CustOrder,Salary,Guid
TCF4338,INDEXABLE CUTTING TOOL,4/11/2016,""$100,000"",56531508-89c0-4ecf-afaf-cdf5aec56b19
CGO9650,Comercial Tecnipak Ltda,7/11/2016,""$80,000"",56531508-89c0-4ecf-afaf-cdf5aec56b19";

            ChoTypeConverterFormatSpec.Instance.TreatCurrencyAsDecimal = false;
            using (var r = ChoCSVReader.LoadText(csv)
                           .WithFirstLineHeader()
                           .WithMaxScanRows(2)
                           .QuoteAllFields()
                   )
            {
                using (var w = new ChoParquetWriter("test1.parquet"))
                {
                    w.Write(r);
                }
            }
        }