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()); }
public override int Execute(CommandContext context, AnalyzeSettings settings) { var filename = settings.File; var output = settings.Schema ?? filename + ".schema"; Stream oStream = output == "." ? Console.OpenStandardOutput() : File.Create(output); var tr = new StreamReader(filename); for (int i = 0; i < settings.Skip; i++) { tr.ReadLine(); } var csv = CsvDataReader.Create(tr); var a = new SchemaAnalyzer(new SchemaAnalyzerOptions { AnalyzeRowCount = settings.Lines }); var re = a.Analyze(csv); var sb = re.GetSchemaBuilder(); foreach (var col in sb) { // TODO: think more about how to handle columns size col.ColumnSize = null; } var schema = sb.Build(); using var tw = new StreamWriter(oStream); tw.Write(schema.ToString().Replace(",", "," + Environment.NewLine)); return(0); }
private void UiAction_Generate() { PleaseWait.ShowPleaseWait("Connecting to database server", true, false); using (System.Data.Common.DbConnection conn = _projectDefinition.DbSettions.GetNewConnection()) using (ExSchemaEngine schemaEngine = _projectDefinition.DbSettions.GetSchemaEngine(conn)) { // Connection to database conn.Open(); // Let application catchup Application.DoEvents(); // Reading database PleaseWait.WaitingState = "Reading database schema"; // 1 ========================== // Database schema reader var schemaDatabase = new DbDatabase(); schemaDatabase.Provider = _projectDefinition.DbSettions.DatabaseProvider; // shcema engine options schemaEngine.SpecificOwner = _projectDefinition.DbSettions.DatabaseProvider == DatabaseProvider.Oracle ? _projectDefinition.DbSettions.SqlUsername : _projectDefinition.DbSettions.SchemaName; // columns descriptions schemaEngine.ReadColumnsDescription = _projectDefinition.CodeGenSettings.GenerateColumnsDescription; schemaEngine.ReadTablesForeignKeys = _projectDefinition.CodeGenSettings.GenerateTablesForeignKeys; schemaEngine.ReadConstraintKeys = _projectDefinition.CodeGenSettings.GenerateConstraintKeys; // only selected tables schemaEngine.OnlyReadSelectedItems = true; schemaEngine.SelectedTables = _projectDefinition.DbSettions.GetSelectedTablesList(); schemaEngine.SelectedViews = _projectDefinition.DbSettions.GetSelectedViewsList(); // read database schema schemaEngine.FillSchema(schemaDatabase); PleaseWait.WaitingState = "Analyzing database schema"; // 2 ====================== var alanyzer = new SchemaAnalyzer(_projectDefinition, _patternProject, schemaDatabase); alanyzer.AnalyzeAndRename(); PleaseWait.WaitingState = "Generating output files"; // 3 ========================== // Start the generator var engine = new Generator(_projectDefinition, _patternProject, schemaDatabase, schemaEngine); engine.Generate(); // Update last generation _projectDefinition.LastGeneration = DateTime.Now; // 4 ========================== // Reaload the form Refresh_Form(); // Abort the please wait PleaseWait.Abort(); // Data is modified SetModified(true); // to active tab tabMainProject.SelectedTab = tabGenFiles; } }