【问题标题】:What SQL DataTypes to look for?要查找哪些 SQL 数据类型?
【发布时间】:2010-11-04 09:34:01
【问题描述】:

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

1- 一张 Excel 表格。

2- 打开与 Excel 的连接

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

4- 在数组中添加列名称

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

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中的数据类型一样吗?有某种映射吗?请帮帮我。 谢谢

【问题讨论】:

  • 是否使所有列 NVarchar 不正常?你需要数据类型来匹配excel中数据的实际类型吗?
  • 您可以尽可能地尝试在SQL server中为Excel电子表格数据找到最接近的数据类型。您可以更轻松地从 SQL DB 导出和导入。
  • 感谢您的回复,我的目标是让数据类型与 Excel 中数据的实际类型相匹配。我不能使用导入按钮。我需要为它写一个代码

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


【解决方案1】:

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

映射到列的 .NET Framework 类型。

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

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

【讨论】:

  • 您好,第一个链接打不开。第二个不是我在寻找的时候。我想将 Excel 列数据类型映射到 Sql 数据类型。 :)
  • @PeacefulSoul - 抱歉,链接已修复。您应该能够从中执行您想要的操作,因为 GetSchemaTable 将返回映射到 .NET 类型的列的类型 - 从这个 .NET 类型,您可以通过第二个链接获得等效的 SqlDbType。
【解决方案2】:

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

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

【讨论】:

  • 我有 excel 列,正如 Yves 所说,我可以使用这个:DataTable schema = rdr.GetSchemaTable(); foreach(schema.Rows 中的 DataRow 行){ foreach(schema.Columns 中的 DataColumn col)Console.WriteLine(col.DataType); } 获取列数据类型。但我的问题仍然存在:我是否必须在我从 excel 获得的数据类型和我应该实际添加到 Sql 数据库中的数据类型之间进行某种匹配?
  • msdn.microsoft.com/en-us/library/ms712640%28VS.85%29.aspx 这描述了不同的 excel 数据类型如何映射到 SQL 以及您希望如何匹配它们。这就是你要找的东西吗?
【解决方案3】:

您可以使用 GetTableSchema() 确定列的数据类型...

              DataTable  schema  =  rdr.GetSchemaTable();   

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

【讨论】:

  • 感谢您的回复。 Excel 的所有数据类型都在 Sql 中找到吗?因此,如果我在创建命令中添加 col.DataType,它会正常工作吗?
  • 您需要将类型转换为sql类型。但类型主要是 float、integer、datetime 和 varchar。
  • 正是我想要的。但我该怎么做?我怎么知道哪个 Excel 类型被翻译成哪个 SqlDatatype ?
猜你喜欢
  • 2012-05-01
  • 2011-03-17
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2011-12-27
相关资源
最近更新 更多