Какие SQL DataTypes искать? - PullRequest
       17

Какие SQL DataTypes искать?

1 голос
/ 04 ноября 2010

Я написал код, используя c # - Visual 2008-, который принимает:

1 - лист Excel.

2 - открывает соединение с Excel

3 - Считывает имена столбцов, используя объект OleDbDataReader и метод GetTableSchema

4 - Добавлены имена столбцов в массиве

5- Создана таблица с такими же именами столбцов, что и в листе EXcel (я использовал CREATE table
команды)

6-Затем, после создания таблицы в SQL, я зацикливаюсь на строках Excel и добавляю данные. в SQL с помощью команды вставки.

Теперь моя проблема:

В команде «создать таблицу» я должен указать DATATYPE для столбца! Т.е.

CREATE TABLE "table_name"
("column 1" "data_type_for_column_1",
"column 2" "data_type_for_column_2",
... )

КАК мне решить эту проблему? Являются ли типы данных, которые превосходят столбцы Excel, такими же, как типы данных в SQL-сервере? есть какое-то отображение? пожалуйста, помогите мне. спасибо

Ответы [ 3 ]

1 голос
/ 04 ноября 2010

OleDbDataReader.GetSchemaTable даст вам, какой базовый тип данных взят из электронной таблицы. Это (цитата):

Сопоставляется с типом столбца .NET Framework.

Затем вам нужно отобразить это на соответствующий SqlDbType. Проверьте этот другой ответ для идей о том, как это сделать.

Другой момент, который я хотел бы затронуть в качестве побочной, - рассмотреть возможность массовой загрузки данных из Excel в SQL Server, а не «читать строку / вставлять строку». Я не знаю, о каких объемах данных вы говорите, но это может ускорить процесс.

0 голосов
/ 04 ноября 2010

Вы можете выяснить тип данных столбца, используя GetTableSchema () ...

              DataTable  schema  =  rdr.GetSchemaTable();   

              foreach  (DataRow  row  in  schema.Rows)     
              {   
                    foreach  (DataColumn  col  in  schema.Columns)   
                          Console.WriteLine(col.DataType);   
              }   
0 голосов
/ 04 ноября 2010

Я считаю, что вы можете использовать. Тип данных sql_variant, если вы не знаете, какой он будет Я бы посмотрел на это.

http://msdn.microsoft.com/en-us/library/ms173829.aspx

...