要查找哪些SQL数据类型?

时间:2010-11-04 09:34:02

标签: c# sql-server-2005 ado.net oledb getschematable

我使用c#编写了一个代码 - Visual 2008-需要:

1- excel表。

2-打开与Excel的连接

3-使用OleDbDataReader对象和GetTableSchema方法读取列名称

4-在数组中添加了列名称

5-创建一个与EXcel表具有相同列名的表(我使用了CREATE表
   命令)

6 - 然后,一旦我在SQL中创建了表,我就在ecel行上循环添加数据   使用Insert命令进入sql。

现在我的问题是:

在“create table”命令中,我必须为列指定DATATYPE!即

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

我该如何解决这个问题? excel列的数据类型是否可以与SQL Server中的数据类型相同?有某种映射吗?请帮帮我。 谢谢

3 个答案:

答案 0 :(得分:1)

OleDbDataReader.GetSchemaTable将为您提供电子表格中的基础数据类型。这(引用):

  

映射到列的.NET Framework类型。

然后,您需要将其映射到适当的SqlDbType。查看this other answer,了解有关如何执行此操作的建议。

我想提出的另一点是,考虑将数据从excel批量加载到SQL Server而不是“读取行/插入行”。我不知道你在说什么数据量,但这可以加快这个过程。

答案 1 :(得分:0)

我相信你可以使用。 sql_variant数据类型,如果你不知道它将是什么样的? 我会看看那个。

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

答案 2 :(得分:0)

您可以使用GetTableSchema()...

找出列的数据类型
              DataTable  schema  =  rdr.GetSchemaTable();   

              foreach  (DataRow  row  in  schema.Rows)     
              {   
                    foreach  (DataColumn  col  in  schema.Columns)   
                          Console.WriteLine(col.DataType);   
              }