在 SQL Server 2008 中将数据从浮点类型的 Excel 导入 varchar
Posted
技术标签:
【中文标题】在 SQL Server 2008 中将数据从浮点类型的 Excel 导入 varchar【英文标题】:Import data from Excel of type float to varchar in SQL Server 2008 【发布时间】:2011-10-11 05:48:03 【问题描述】:我在将数据从 Excel 导入 SQL 时遇到问题。在 SQL 的导入向导中,字段的数据类型是浮点数(因为数据包含纯数字、IDNumber、BiometricNumber 和 BankAccountNumber)现在 SQL 中此字段的数据类型是 varchar,并且每当我查询或传输数据时其他表值的格式更改为使用 e+ 数字浮动。有人吗?
【问题讨论】:
您是否尝试过在 Excel 中使用“格式化单元格”? 还没试过,谢谢。 如果有人想知道为什么数据元素BankAccountNumber
的类型是 FLOAT
,请考虑 Excel 的 Access(ACE、Jet 等)SQL 只有一种数字数据类型;)
感谢我遵循 Mi Mee 的建议,并意识到在 excel 中更改该特定列的格式。
【参考方案1】:
首先,确保您在连接字符串中使用了IMEX=1
,并且相关的注册表项值已正确设置。详情请见this article。
就我个人而言,我从来没有遇到过科学记数法的问题,但一些人报告了 cmets 中的类似问题,因此可能值得一试。这是我发现的一对:
在 SQL 中,
Format([COLUMN NAME], ‘@’) As [COLUMN NAME]
在 Excel 中,列必须被格式化(格式化单元格)为“一般”(不是 格式化为“文本”)。
不过,我不能为他们担保 ;)
【讨论】:
我尝试过格式化为一般格式和文本格式,但 MSSQL 仍然将其设置为浮点数!!! @Huei:但是你有没有设置IMEX=1
,适当的设置注册表设置等等?该文章的链接已损坏,但谷歌搜索“IMEX=1”和我的句柄(OneDayWhen)应该会显示更多细节,例如这里:instantpages.ltd.uk/ADODB_WP.htm【参考方案2】:
当它是“常规”时,我将 excel 列的数据类型更改为“文本”,并且 32 位 SQL Server 导入工具将其选为 nvarchar。
【讨论】:
以上是关于在 SQL Server 2008 中将数据从浮点类型的 Excel 导入 varchar的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 C# 中将访问数据库(.mdb)导入 sql server 2008
在 SQL Server 2008 R2 中将 varchar 转换为时间戳
如何在 sql server 2008 中将日期与 GETDATE() 进行比较