1

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

1-一张Excel表格。

2- 打开与 Excel 的连接

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

4-在数组中添加列名称

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

6-然后,一旦我在 SQL 中创建了表,我就会遍历 excel 行并使用 Insert 命令将数据添加到 sql 中。

现在我的问题是:

在“创建表”命令中,我必须为列指定数据类型!即

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

我应该如何解决这个问题?excel列可以的数据类型和SQL server中的数据类型一样吗?有某种映射吗?请帮帮我。谢谢你

4

3 回答 3

1

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

映射到列的 .NET Framework 类型。

然后,您需要将其映射到适当的 SqlDbType。查看其他答案以获取有关如何执行此操作的想法。

我想提出的另一点是考虑将数据从 excel 批量加载到 SQL Server 中,而不是“读取一行/插入一行”。我不知道您在谈论什么数据量,但这可以加快处理速度。

于 2010-11-04T09:49:10.397 回答
0

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

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

于 2010-11-04T09:37:40.570 回答
0

您可以使用 GetTableSchema() 找出列的数据类型...

              DataTable  schema  =  rdr.GetSchemaTable();   

              foreach  (DataRow  row  in  schema.Rows)     
              {   
                    foreach  (DataColumn  col  in  schema.Columns)   
                          Console.WriteLine(col.DataType);   
              }   
于 2010-11-04T09:42:52.490 回答