我使用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中的数据类型相同?有某种映射吗?请帮帮我。 谢谢
答案 0 :(得分:1)
OleDbDataReader.GetSchemaTable将为您提供电子表格中的基础数据类型。这(引用):
映射到列的.NET Framework类型。
然后,您需要将其映射到适当的SqlDbType。查看this other answer,了解有关如何执行此操作的建议。
我想提出的另一点是,考虑将数据从excel批量加载到SQL Server而不是“读取行/插入行”。我不知道你在说什么数据量,但这可以加快这个过程。
答案 1 :(得分:0)
我相信你可以使用。 sql_variant数据类型,如果你不知道它将是什么样的? 我会看看那个。
答案 2 :(得分:0)
您可以使用GetTableSchema()...
找出列的数据类型 DataTable schema = rdr.GetSchemaTable();
foreach (DataRow row in schema.Rows)
{
foreach (DataColumn col in schema.Columns)
Console.WriteLine(col.DataType);
}