SQLserver导入Excel数据长度限制报错

先介绍一下写该博客的背景:由于最近在使用腾讯问卷统计健康信息,导出的Excel表中,备注字段填报的数据过长,最长达到346,而在执行Excel导入表操作时,会出现数据被截断错误,导致数据导入失败。

百度搜索原因:发现大多数给出的原因是在导入数据过程中,生成的临时表会根据Excel的前8行或者前3行确定数据类型,所以后面数据长度过长,导入失败。

在初始建表时给字段设置长度限制也还是报错。

第一种方法:直接从任务》导入数据》选择Excel数据源,这种方式长度超过255 数据无法导入成功

第二种方法:使用SQL语句导入数据

需要说明:导入的Excel数据字段与目标数据表的字段一一对应。

------------------首先进行如下设置----------------------

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

-------------------------导入数据语句---------------------

insert into txwj.dbo.yswj1
SELECT * FROM OpenDataSource
( 'Microsoft.ACE.OLEDB.12.0','Data Source="C:\Users\Administrator\Desktop\111111.xlsx";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet2$]

经本人验证,Excel文件中存在数据超过255长度的,最终文件可以导入成功,但是超过256的字段数据会被截断,只留下一部分(例如我测试的数据长度是346最后导入之后剩下239)

目前将Excel数据导入SQLserver无法解决长度超过256的问题,问题待解决。

 

posted @ 2020-05-28 15:15  自由的射手  阅读(1365)  评论(0编辑  收藏  举报