Пример #1
0
        static void WriteCsv(CsvZipPackage csvz, string csv)
        {
            Console.WriteLine($"Processing {Path.GetFileName(csv)}: ");
            var data     = CsvDataReader.Create(csv);
            var analyzer = new SchemaAnalyzer();

            Console.Write($"  Analyzing. ");
            var sw     = Stopwatch.StartNew();
            var result = analyzer.Analyze(data);

            Console.WriteLine(sw.Elapsed.ToString());

            var schema    = result.GetSchema();
            var csvSchema = new CsvSchema(schema);

            var csvOpts = new CsvDataReaderOptions {
                Schema = csvSchema
            };

            Console.Write($"  Writing.   ");
            data = CsvDataReader.Create(csv, csvOpts);
            sw   = Stopwatch.StartNew();
            var entry = csvz.CreateEntry(Path.GetFileName(csv));

            entry.WriteData(data);
            Console.WriteLine(sw.Elapsed.ToString());
        }
Пример #2
0
        static int Package(string dir, string file)
        {
            dir ??= ".";

            if (!Directory.Exists(dir))
            {
                Error($"Directory '{dir}' doesn't exist.");
                return(1);
            }

            if (GetCsvs(dir).Any() == false)
            {
                Error($"Directory '{dir}' doesn't contain any csvs.");
                return(2);
            }

            if (file == null)
            {
                var d = Path.GetFullPath(dir);
                var f = Path.GetFileName(d);
                file = f + ".csvz";
            }

            Console.WriteLine("Creating: " + file);
            using var csvz = CsvZipPackage.Create(file);
            foreach (var csv in Directory.EnumerateFiles(dir, "*.csv", SearchOption.TopDirectoryOnly))
            {
                WriteCsv(csvz, csv);
            }
            Console.WriteLine("Done.");
            return(0);
        }
Пример #3
0
        static int Add(string file, string name, bool overwrite)
        {
            if (!File.Exists(file))
            {
                Error("File not found: " + file);
                return(1);
            }

            if (!File.Exists(name))
            {
                Error("File not found: " + file);
                return(2);
            }

            using var csvz = CsvZipPackage.Open(file);
            var entry = csvz.FindEntry(name);

            if (entry != null)
            {
                if (overwrite)
                {
                    Console.WriteLine("Entry already exists, overwriting.");
                    entry.Delete();
                }
                else
                {
                    Error("File " + file + " alrady contain a table named " + name + ", specify overwrite to replace.");
                    return(3);
                }
            }
            WriteCsv(csvz, name);
            Console.WriteLine($"Added {name} to {file}.");
            return(0);
        }
Пример #4
0
        static int Columns(string file, string name)
        {
            if (!File.Exists(file))
            {
                Error("File not found: " + file);
                return(1);
            }

            using var csvz = CsvZipPackage.Open(file);

            var entry = csvz.FindEntry(name);

            var cols = entry.GetColumnSchema();

            var table = new ConsoleTable("Column", "Ordinal", "Type", "Nullable");

            table.Configure(o => o.NumberAlignment = Alignment.Right);
            foreach (var col in cols.OrderBy(c => c.ColumnOrdinal))
            {
                table.AddRow(col.ColumnName, col.ColumnOrdinal, col.DataTypeName, col.AllowDBNull);
            }

            table.Write(Format.Minimal);

            return(0);
        }
Пример #5
0
        static int Remove(string file, string name)
        {
            if (!File.Exists(file))
            {
                Error("File not found: " + file);
                return(1);
            }

            using var csvz = CsvZipPackage.Open(file);
            var entry = csvz.FindEntry(name);

            if (entry == null)
            {
                Error("File " + file + " doesn't contain a table named " + name);
                return(2);
            }
            entry.Delete();
            Console.WriteLine($"Removed {name} from {file}.");
            return(0);
        }
Пример #6
0
        static int Tables(string file)
        {
            if (!File.Exists(file))
            {
                Error("File not found: " + file);
                return(1);
            }

            using var csvz = CsvZipPackage.Open(file);

            var table = new ConsoleTable("Table", "Size", "Rows", "Columns");

            table.Configure(o => o.NumberAlignment = Alignment.Right);
            foreach (var entry in csvz.Entries)
            {
                table.AddRow(entry.Name, entry.Length, entry.RowCount, entry.ColumnCount);
            }

            table.Write(Format.Minimal);

            return(0);
        }