public void OpenWriter(TableCsv table) { // Open file //System.IO.StreamWriter textWriter = File.OpenWrite(table.FilePath); System.IO.StreamWriter textWriter = new StreamWriter(table.FilePath, false, table.Encoding); csvWriter = new CsvHelper.CsvWriter(textWriter); csvWriter.Configuration.HasHeaderRecord = table.HasHeaderRecord; csvWriter.Configuration.Delimiter = table.Delimiter; csvWriter.Configuration.CultureInfo = table.CultureInfo; csvWriter.Configuration.Encoding = table.Encoding; csvWriter.Configuration.QuoteAllFields = true; }
public List <DcColumn> LoadSchema() // Table object is created to store all necessary parameters which are individual for each table { TableCsv table = this; List <DcColumn> columns = new List <DcColumn>(); if (table.FilePath == null || !File.Exists(table.FilePath)) // File might not have been created (e.g., if it is an export file) { return(columns); } // TODO: We should not use connection - use TableReader/TableWriter where necessary (connection is hidden within them) ConnectionCsv connection = new ConnectionCsv(); connection.OpenReader(table); List <string> names = connection.ReadColumns(); List <string[]> sampleRows = connection.ReadSampleValues(); for (int i = 0; i < names.Count; i++) { string columnName = names[i]; DcTable type = this.Schema.GetPrimitiveType("String"); ColumnCsv column = (ColumnCsv)Space.CreateColumn(DcSchemaKind.Csv, columnName, table, type, false); //DcColumn column = Space.CreateColumn(columnName, table, type, false); columns.Add(column); // Properties specific to this column type column.ColumnIndex = i; var values = new List <string>(); foreach (var row in sampleRows) { values.Add(row[i]); } column.SampleValues = values; } connection.CloseReader(); return(columns); }
public ConnectionCsv connection; // Connection object for access to the native engine functions // Use name of the connection for setting schema name #endregion #region Schema methods public List <DcColumn> LoadSchema(TableCsv table) // Table object is created to store all necessary parameters which are individual for each table { List <DcColumn> columns = new List <DcColumn>(); if (table.FilePath == null || !File.Exists(table.FilePath)) // File might not have been created (e.g., if it is an export file) { return(columns); } connection.OpenReader(table); List <string> names = connection.ReadColumns(); List <string[]> sampleRows = connection.ReadSampleValues(); for (int i = 0; i < names.Count; i++) { string columnName = names[i]; DcTable type = this.GetPrimitiveType("String"); ColumnCsv column = (ColumnCsv)Space.CreateColumn(DcSchemaKind.Csv, columnName, table, type, false); column.ColumnIndex = i; columns.Add(column); var values = new List <string>(); foreach (var row in sampleRows) { values.Add(row[i]); } column.SampleValues = values; } //AddTable(table, null, null); connection.CloseReader(); return(columns); }
public void OpenReader(TableCsv table) { OpenReader(table.FilePath, table.HasHeaderRecord, table.Delimiter, table.CultureInfo.NumberFormat.NumberDecimalSeparator, table.Encoding); }