要寻找哪些 SQL 数据类型?
我使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
OleDbDataReader.GetSchemaTable 将为您提供电子表格中的基础数据类型是什么。这个(引用):
然后,您需要将其映射到适当的 SqlDbType。查看 这个其他答案有关如何做到这一点的想法。
我想提出的另一点是考虑将 Excel 中的数据批量加载到 SQL Server 中,而不是“读取一行/插入一行”。我不知道你在谈论什么数据量,但这可以加快这个过程。
OleDbDataReader.GetSchemaTable will give you what the underlying datatype is from the spreadsheet. This (quote):
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.
相信你可以用。 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
您可以使用 GetTableSchema() 找出列的数据类型...
You can figure out the data type of the column using GetTableSchema()...