C # Как я могу получить каждый тип столбца и длину, а затем использовать длину по горизонтали, чтобы получить пробелы в конце каждого поля - PullRequest
4 голосов
/ 03 июня 2010

У меня есть консольное приложение, которое извлекает данные из таблицы SQL в плоский файл. Как я могу получить каждый тип столбца и длину, а затем использовать длину каждого столбца для прямого (длина), чтобы получить пробелы в конце каждого поля. Вот то, что у меня есть сейчас, но не включает эту функциональность.

Спасибо

{
                var destination = args[0];
                var command = string.Format("Select * from {0}", Validator.Check(args[1]));
                var connectionstring = string.Format("Data Source={0}; Initial Catalog=dbname;Integrated Security=SSPI;", args[2]);

            var helper = new SqlHelper(command, CommandType.Text, connectionstring);

            using (StreamWriter writer = new StreamWriter(destination))
            using (IDataReader reader = helper.ExecuteReader())
            {
                while (reader.Read())
                {
                    Object[] values = new Object[reader.FieldCount];
                    int fieldCount = reader.GetValues(values);

                    for (int i = 0; i < fieldCount; i++)
                        writer.Write(values[i].ToString().PadRight(513));

                    writer.WriteLine();
                }

                writer.Close();
            }

Ответы [ 2 ]

7 голосов
/ 03 июня 2010

IDataReader предлагает метод GetSchemaTable () , который предоставляет атрибут ColumnSize (это зависит от основного поставщика - версия SQL Server здесь ).

3 голосов
/ 03 июня 2010

Вы можете использовать метод DataReader's GetSchemaTable для получения информации о схеме столбца. Эта статья содержит подробные сведения о получении метаданных о найденных данных.

Получив размер столбца, вы можете добавить завершающие символы в извлеченные данные, используя метод String.PadRight.

...