将Excel数据导入到SqlServer及导入时数据类型转换失败解决方案

将数据导入到SqlServer是很常用的一个功能,而Excel数据源又是数据导入功能的常用数据源,在使用时遇到一些问题,记录下来防止大家走弯路。

UserInfo表结构以及Excel数据截图

UserInfo表结构:
表结构
Excel数据:
![这里写图片描述]
(https://img-blog.csdn.net/20161013095015485)

SqlServer导入数据

1、右击数据库->任务->导入数据->下一步
这里写图片描述
2、设置数据源为Microsoft Excel->选择文件路径->下一步
这里写图片描述
3、身份验证->选择目标数据库->下一步
这里写图片描述
4、选择第一项->下一步
这里写图片描述
5、选择源数据和目标->下一步
这里写图片描述
6、导入结果
如果源数据与目标表所需数据的格式相匹配,那即可成功导入。
但往往会有数据不匹配的情况,例如:
这里写图片描述

数据转换失败解决方案

1、Double无法转换为nvarchar
UserInfo表中的UserName列是nvarchar(20)类型,而Excel表中UserName列的数据是111、222、333,因此被识别为double类型
解决方案:
选中UserName列的数据->数据->分列->下一步->下一步->选择“文本”->完成,再导入时UserName列格式就能匹配上了。
这里写图片描述
这里写图片描述

2、Double无法转换为int
UserInfo表中的UserId列是int类型,而Excel表中UserId列的数据2016010、2016011、2016012被识别为double类型
解决方案:
1)导入数据在选择源表和源视图时,不要选择表,那会在数据库中创建一个跟源数据同名的表。
这里写图片描述
这里写图片描述
2)把dbo.Sheet1$表中UserId列的数据类型修改为int型

alter table dbo.Sheet1$
alter column UserId int null

3)把dbo.Sheet1$表中的数据追加到dbo.UserInfo表中
右击数据库->任务->导入数据->下一步,
设置数据源为SQLServer Native Client 10.0->输入服务器名称->身份验证->选择源数据库->下一步,
设置目标为SQLServer Native Client 10.0->输入服务器名称->身份验证->选择目标数据库->下一步,
选择第一项->下一步,
选择源数据和目标->下一步(源中列出的是源数据中的表,目标中列出的是目标数据库中的表),
这里写图片描述
最后一步,追加成功。
这里写图片描述

我知道Double转int的解决方案有点麻烦,如果大家有好的方法的话请留言慷慨分享一下,谢谢了。

  • 12
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值