要寻找哪些 SQL 数据类型?

发布于 2024-09-30 17:41:15 字数 562 浏览 3 评论 0原文

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

1- 一张 Excel 工作表。

2- 打开与 Excel 的连接

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

4- 在数组中添加列名称

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

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

I wrote a code using c#- Visual 2008- that takes:

1- an excel sheet.

2- Opens a connection to Excel

3- Reads the Column names using the OleDbDataReader object and GetTableSchema method

4- Added the Columns names in an array

5- Created a Table that has the same Column names as the EXcel sheet ( i used CREATE table
command)

6-Then once i have the table created in SQL , i loop over the excel rows an add the data
into sql using Insert command.

Now My problem is:

In the " create table" command , i have to specify the DATATYPE for the column !i.e.

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

HOW should i solve this problem? Are the datatypes that excel columns can be, the same as the datatypes in SQL server? is there some kind of mapping ? please help me out.
thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

林空鹿饮溪 2024-10-07 17:41:15

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

映射到列的 .NET Framework 类型。

然后,您需要将其映射到适当的 SqlDbType。查看 这个其他答案有关如何做到这一点的想法。

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

OleDbDataReader.GetSchemaTable will give you what the underlying datatype is from the spreadsheet. This (quote):

Maps to the .NET Framework type of the column.

You then need to map that to the appropriate SqlDbType. Check out this other answer for ideas on how to do that.

The other point I wanted to raise as a side point, was to consider bulk loading the data from excel into SQL Server instead of "read a row / insert a row". I don't know what data volumes you're talking about, but that could speed the process up.

画中仙 2024-10-07 17:41:15

相信你可以用。 sql_variant 数据类型,如果您不知道它将是什么类型?
我想看看。

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

I believe you can use. sql_variant data type if you dont know what kind it is going to be?
i'd take a look at that.

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

难以启齿的温柔 2024-10-07 17:41:15

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

              DataTable  schema  =  rdr.GetSchemaTable();   

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

You can figure out the data type of the column using GetTableSchema()...

              DataTable  schema  =  rdr.GetSchemaTable();   

              foreach  (DataRow  row  in  schema.Rows)     
              {   
                    foreach  (DataColumn  col  in  schema.Columns)   
                          Console.WriteLine(col.DataType);   
              }   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文