Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public void OpenReader(TableCsv table)
 {
     OpenReader(table.FilePath, table.HasHeaderRecord, table.Delimiter, table.CultureInfo.NumberFormat.NumberDecimalSeparator, table.Encoding);
 }