sql server导入excel时源数据列的数据类型问题

SeaHome81 2018-07-05 04:14:16
本人在处理excel的数据导入到sql server2008r2里的数据库时,碰到如下问题:
1、当取款列前几行数据为空时(其他行有数据),sql server2008导入工具会判断源数据该列为nvarchar类型,从而导致目标数据中该列值都为空;
原始excel数据、导入时sql判断的源数据列的数据类型(nvarchar)、导入预览的目标数据(取款列为空)

2、当取款列前几行有数据时(填充了个0),sql server2008导入工具会判断源数据该列为float类型,目标数据中该列值都能正常获取到;
取款列填充0后的源数据、导入时sql判断的源数据列的数据类型(float)、导入预览的目标数据(取款列数据显示正常)


所以本人想问下各位高人,1、这个sql server导入数据时怎么判断源数据列的数据类型;2、像我碰到的这个问题如何解决(试过修改excel中该列单元格格式的数字类型也不行)?先在此谢谢!
...全文
1528 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天之落叶 2020-04-10
  • 打赏
  • 举报
回复
引用 16 楼 I'm GD 的回复:
[quote=引用 15 楼 秋天之落叶的回复:]我也碰到过这样的问题,告诉你解决的方法: 先默认导入类型,什么也不修改,导入数据; 然后删除已经导入表中的数据,修改已经创建的表的数据类型; 再次使用向导,导入数据,选择你已经修改好数据类型,OK,大功告成!
请教一下,再次使用向导,怎么把数据导进你修改好类型的表?[/quote] 直接使用就好!
6seven8 2020-04-10
  • 打赏
  • 举报
回复
引用 14 楼 SeaHome81的回复:
[quote=引用 13 楼 yenange 的回复:]
[quote=引用 11 楼 seahome81 的回复:]
[quote=引用 10 楼 yenange 的回复:]
试了一下, 确实如你所说, 取款( qk ) 那一栏有问题, 导入时源类型是 VARCHAR , 导不进来。
很早以前弄过, 在 Excel 中, 如果前 8 行没有数据的话, 则影响数据的类型判断。这个应该是内部的优化机制, 不可能每一行都查一遍。
你可以在前 8 行的任意一行, 设置数据为0就可以了, 反正也不影响你最终的结果, 最终导入时就是正常的。

是的,版主说的对,我之前试过,前面几行随便哪行输入个数据,导入时就正常,另外版主试过sql server是通过excel前8行判断数据类型的?再次感谢版主答疑![/quote]
很早以前弄过, 不记得是看哪里的资料了。
你可以试一下, 第 9 行才有数据行不行?
这个就不需要纠结了, 只是一个经验问题而已。[/quote]
谢谢版主,结贴了[/quote] 我是把表内数据顺序改成有数据的在上面,就可以正常导入了,之前不知道问题出在哪里,怎么试都不行,看了帖发现是前几行不能空,太坑了
6seven8 2020-04-10
  • 打赏
  • 举报
回复
引用 15 楼 秋天之落叶的回复:
我也碰到过这样的问题,告诉你解决的方法: 先默认导入类型,什么也不修改,导入数据; 然后删除已经导入表中的数据,修改已经创建的表的数据类型; 再次使用向导,导入数据,选择你已经修改好数据类型,OK,大功告成!
请教一下,再次使用向导,怎么把数据导进你修改好类型的表?
秋天之落叶 2020-04-03
  • 打赏
  • 举报
回复 1
我也碰到过这样的问题,告诉你解决的方法: 先默认导入类型,什么也不修改,导入数据; 然后删除已经导入表中的数据,修改已经创建的表的数据类型; 再次使用向导,导入数据,选择你已经修改好数据类型,OK,大功告成!
SeaHome81 2018-07-11
  • 打赏
  • 举报
回复
引用 13 楼 yenange 的回复:
[quote=引用 11 楼 seahome81 的回复:]
[quote=引用 10 楼 yenange 的回复:]
试了一下, 确实如你所说, 取款( qk ) 那一栏有问题, 导入时源类型是 VARCHAR , 导不进来。
很早以前弄过, 在 Excel 中, 如果前 8 行没有数据的话, 则影响数据的类型判断。这个应该是内部的优化机制, 不可能每一行都查一遍。
你可以在前 8 行的任意一行, 设置数据为0就可以了, 反正也不影响你最终的结果, 最终导入时就是正常的。

是的,版主说的对,我之前试过,前面几行随便哪行输入个数据,导入时就正常,另外版主试过sql server是通过excel前8行判断数据类型的?再次感谢版主答疑![/quote]
很早以前弄过, 不记得是看哪里的资料了。
你可以试一下, 第 9 行才有数据行不行?
这个就不需要纠结了, 只是一个经验问题而已。[/quote]
谢谢版主,结贴了
吉普赛的歌 2018-07-10
  • 打赏
  • 举报
回复
引用 11 楼 seahome81 的回复:
[quote=引用 10 楼 yenange 的回复:]
试了一下, 确实如你所说, 取款( qk ) 那一栏有问题, 导入时源类型是 VARCHAR , 导不进来。
很早以前弄过, 在 Excel 中, 如果前 8 行没有数据的话, 则影响数据的类型判断。这个应该是内部的优化机制, 不可能每一行都查一遍。
你可以在前 8 行的任意一行, 设置数据为0就可以了, 反正也不影响你最终的结果, 最终导入时就是正常的。

是的,版主说的对,我之前试过,前面几行随便哪行输入个数据,导入时就正常,另外版主试过sql server是通过excel前8行判断数据类型的?再次感谢版主答疑![/quote]
很早以前弄过, 不记得是看哪里的资料了。
你可以试一下, 第 9 行才有数据行不行?
这个就不需要纠结了, 只是一个经验问题而已。
吉普赛的歌 2018-07-10
  • 打赏
  • 举报
回复
试了一下, 确实如你所说, 取款( qk ) 那一栏有问题, 导入时源类型是 VARCHAR , 导不进来。
很早以前弄过, 在 Excel 中, 如果前 8 行没有数据的话, 则影响数据的类型判断。这个应该是内部的优化机制, 不可能每一行都查一遍。
你可以在前 8 行的任意一行, 设置数据为0就可以了, 反正也不影响你最终的结果, 最终导入时就是正常的。
SeaHome81 2018-07-10
  • 打赏
  • 举报
回复
引用 9 楼 shinger126 的回复:
你这个最大有极大的可能是取款列中某行数据有空格,你在EXCEL中使用替换把空格替换掉再试试

是的,我试过的,替换一个就可以了,其实我是想知道sql server的数据导入时的数据类型判断规则,版主已经答疑了
SeaHome81 2018-07-10
  • 打赏
  • 举报
回复
引用 10 楼 yenange 的回复:
试了一下, 确实如你所说, 取款( qk ) 那一栏有问题, 导入时源类型是 VARCHAR , 导不进来。
很早以前弄过, 在 Excel 中, 如果前 8 行没有数据的话, 则影响数据的类型判断。这个应该是内部的优化机制, 不可能每一行都查一遍。
你可以在前 8 行的任意一行, 设置数据为0就可以了, 反正也不影响你最终的结果, 最终导入时就是正常的。

是的,版主说的对,我之前试过,前面几行随便哪行输入个数据,导入时就正常,另外版主试过sql server是通过excel前8行判断数据类型的?再次感谢版主答疑!
shinger126 2018-07-09
  • 打赏
  • 举报
回复
你这个最大有极大的可能是取款列中某行数据有空格,你在EXCEL中使用替换把空格替换掉再试试
shinger126 2018-07-09
  • 打赏
  • 举报
回复
引用 7 楼 seahome81 的回复:
[quote=引用 6 楼 yenange 的回复:]
[quote=引用 4 楼 seahome81 的回复:]
感谢版主答疑,但是版主你没理解我的意思,你这里设置的是目标数据中“取款”列的数据类型(这个是可以设置的,但是即使设置了也无法正常获取到数据),我说的是源数据中“取款”列的数据类型sqlserver默认是nvarchar,这个没法改,如果这个可以改成float类型,那目标“取款”列就能正常获取到数据。

你把 EXCEL 文件放到百度云盘, 共享一下, 有空帮你看看[/quote]
谢谢,文件已经上传,麻烦版主看看
链接:https://pan.baidu.com/s/1CG_7ANgXgGcYHnPQXS-oHA 密码:dz63[/quote]
导入时,勾上首行包含列名称没有?如果有勾上,那么说明下面有某些行的数据不是数字也不是空白栏,这个时候SQL才会判断这个列的类型是Nvarchar
SeaHome81 2018-07-09
  • 打赏
  • 举报
回复
引用 6 楼 yenange 的回复:
[quote=引用 4 楼 seahome81 的回复:]
感谢版主答疑,但是版主你没理解我的意思,你这里设置的是目标数据中“取款”列的数据类型(这个是可以设置的,但是即使设置了也无法正常获取到数据),我说的是源数据中“取款”列的数据类型sqlserver默认是nvarchar,这个没法改,如果这个可以改成float类型,那目标“取款”列就能正常获取到数据。

你把 EXCEL 文件放到百度云盘, 共享一下, 有空帮你看看[/quote]
谢谢,文件已经上传,麻烦版主看看
链接:https://pan.baidu.com/s/1CG_7ANgXgGcYHnPQXS-oHA 密码:dz63
吉普赛的歌 2018-07-06
  • 打赏
  • 举报
回复
引用 4 楼 seahome81 的回复:
感谢版主答疑,但是版主你没理解我的意思,你这里设置的是目标数据中“取款”列的数据类型(这个是可以设置的,但是即使设置了也无法正常获取到数据),我说的是源数据中“取款”列的数据类型sqlserver默认是nvarchar,这个没法改,如果这个可以改成float类型,那目标“取款”列就能正常获取到数据。

你把 EXCEL 文件放到百度云盘, 共享一下, 有空帮你看看
SeaHome81 2018-07-05
  • 打赏
  • 举报
回复
另外你说的这个语句我之前也试过了的,得到的结果一样的,取款列仍然为空
SeaHome81 2018-07-05
  • 打赏
  • 举报
回复
感谢版主答疑,但是版主你没理解我的意思,你这里设置的是目标数据中“取款”列的数据类型(这个是可以设置的,但是即使设置了也无法正常获取到数据),我说的是源数据中“取款”列的数据类型sqlserver默认是nvarchar,这个没法改,如果这个可以改成float类型,那目标“取款”列就能正常获取到数据。
吉普赛的歌 2018-07-05
  • 打赏
  • 举报
回复


另外, 不需要一定用“导入导出向导”吧。
直接用 SQL 从EXCEL 文件中查询, 相关的列强转一下就是了:
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
GO
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
GO
--强制转换
select
CAST([存款] AS FLOAT)
,CAST([取款] AS FLOAT)
--into #tmp
from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\test.xlsx')...[Sheet1$]
SeaHome81 2018-07-05
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:

用导入导出向导, 数据类型可以选择的

版主,这个选择的是目标数据的类型,但是源数据的类型是nvarchar类型的(而且导入时无法修改的,是sql server自动判断的),所以没用,只有当源数据类型是float时,取款列的数据才会正常获取到
吉普赛的歌 2018-07-05
  • 打赏
  • 举报
回复

用导入导出向导, 数据类型可以选择的
  多备份企业文件云备份软件是一款电脑和服务器文件自动定时备份和恢复的数据保护软件,它能实现混合备份,既把数据备份在本地,也能将数据备份到云端;兼容windows、Linux等主流平台。对比传统文件备份软件,多备份提供多种灵活的部署和使用方式,企业既可以在单台设备上使用多备份客户端保护数据;也可以在web控制台集中管理名下的所有设备数据,最多可同时管理数万台设备的数据保护工作。   功能特点   1、即开即用,无需部署,支持个人PC、工作站、服务器、小型机、本地和云端两两之间的自动同步备份和恢复。   2、构建简单,易维护:无需掌握IT技术便可上手,方便后期维护   3、按需所取,不浪费存储空间;   4、无限扩展存储云空间,可分别绑定百度云、阿里云,腾讯云,微软云,金山云,UCloud,七牛,亚马逊云等。   5、备份和恢复速度快:最快30秒启动保护,最快10秒完成恢复   6、支持MySQLSqlServer数据库等文件实施热备份。   7、高安全性:文件传输采用AES256银行级加密标准,所有加密操作都在您设备上完成,离开您设备的数据都是加密的,并且只有您的唯一密钥能解开。   8、支持单向同步、双向同步、增量备份、完全备份等各种文件同步与备份的方式。   9、支持多频率备份选择,能按月、按周、按日、按时、间隔或手动地启动任务。   10、智能的增量备份恢复功能,能够恢复出与每次执行时源目录完全一样的目录结构和文件。   11、异地容灾备份功能:文件一旦备份,可以在任何一台电脑上进行文件恢复,数据永不丢失。   12、支持在任务执行后发送执行结果到指定邮箱,实时掌握任务执行情况。   13、任务执行时中途可以随时中止,已经备份的文件将自动作记录,下次执行时不再重复备份。   14、高效地利用系统资源,分块去重压缩,可以备份或同步超大规模的文件夹,不影响系统性能。非常稳定可靠,能够实现24小时无人值守管理。
多备份企业文件云备份软件是一款电脑和服务器文件自动定时备份和恢复的数据保护软件,它能实现混合备份,既把数据备份在本地,也能将数据备份到云端;兼容windows、Linux等主流平台。 对比传统文件备份软件,多备份提供多种灵活的部署和使用方式,企业既可以在单台设备上使用多备份客户端保护数据;也可以在web控制台集中管理名下的所有设备数据,最多可同时管理数万台设备的数据保护工作。 多备份企业文件云备份软件功能特点 1、即开即用,无需部署,支持个人PC、工作站、服务器、小型机、本地和云端两两之间的自动同步备份和恢复。 2、构建简单,易维护:无需掌握IT技术便可上手,方便后期维护。 3、按需所取,不浪费存储空间。 4、无限扩展存储云空间,可分别绑定百度云、阿里云,腾讯云,微软云,金山云,UCloud,七牛,亚马逊云等。 5、备份和恢复速度快:最快30秒启动保护,最快10秒完成恢复。 6、支持MySQLSqlServer数据库等文件实施热备份。 7、高安全性:文件传输采用AES256银行级加密标准,所有加密操作都在您设备上完成,离开您设备的数据都是加密的,并且只有您的唯一密钥能解开。 8、支持单向同步、双向同步、增量备份、完全备份等各种文件同步与备份的方式。 9、支持多频率备份选择,能按月、按周、按日、按时、间隔或手动地启动任务。 10、智能的增量备份恢复功能,能够恢复出与每次执行时源目录完全一样的目录结构和文件。 11、异地容灾备份功能:文件一旦备份,可以在任何一台电脑上进行文件恢复,数据永不丢失。 12、支持在任务执行后发送执行结果到指定邮箱,实时掌握任务执行情况。 13、任务执行时中途可以随时中止,已经备份的文件将自动作记录,下次执行时不再重复备份。 14、高效地利用系统资源,分块去重压缩,可以备份或同步超大规模的文件夹,不影响系统性能。非常稳定可靠,能够实现24小时无人值守管理。 多备份企业文件云备份软件 v2.2.12.0030更新日志 1、支持linux和windows下基于binlog的mysql实时备份 2、集成cloud5模式 3、备份无变化时不再生成新版本 4、修复一处线程同步的问题 5、修复数据库默认导出路径不规范问题 多备份企业文件云备份软件截图

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧