在 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() 进行比较

发生了无效的浮点运算。 SQL Server 2008

如何在 sql server 2008r2 中将行名更改为列名

在 SQL Server 2008 中将查询结果导出到 .csv 文件