[英]BULK INSERT in SQL SERVER Truncation Error
尝试将Excel文件批量插入表时,出现以下错误
42000-[SQL Server]第2行第5列(service_center)的批量加载数据转换错误(截断)。
制表符分隔的文件看起来像这样
protocol address date type body service_center read_status status date_sent readable_date contact_name
0 AM-GIBSBS " 14,98,31,75,95,113 " 1 "Apply for MBA in 3rd Best B-School, Residential Campus, 100% Placement, Education Loan Asst., Avail Scholarship - Missed Call 08030072318 / www.gibsbschool.com" +919892081135 1 -1 1.49832E+12 "Jun 24, 2017 20:49:55" (Unknown)
我的批量插入和创建表代码看起来像这样
CREATE TABLE sms_tbl (
protocol VARCHAR(50),
address VARCHAR(50),
type VARCHAR(50),
body VARCHAR(500),
service_center VARCHAR(50),
read_status VARCHAR(50),
status VARCHAR(50),
date_sent VARCHAR(50),
readable_date VARCHAR(50),
contact_name VARCHAR(50))
BULK INSERT sms_tbl
FROM 'C:\Users\BIKASH-pc\SmsCallContact\SMS_Bikash.txt'
WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n',FIRSTROW=2)
将body列更改为第一列的开头时,该代码似乎正常工作。 我无法找出发生此错误的原因。
我只是天真地在这里计数,但是错误消息抱怨第五列,并且该值被截断了
您的表定义说service_center是第五列,最大长度为50个字符
您发布的示例数据不包含任何选项卡,但其中的数据具有多个分隔事物的空格,并且“事物”始终出现在可被4整除的列位置上,因此我假设您已将该数据放入标签大小设置为4的文本编辑器,并在发布之前对其进行了“制表符到空格”
这意味着数据的第五个元素是:
“在第三届最佳B学校,住宅校园,100%安置,教育贷款助理,Avail奖学金申请MBA-错过的电话08030072318 / www.gibsbschool.com”
显然超过50个字符。 如果SQLServer尝试将其加载到service_center,它将失败。
根据文件头判断,该数据似乎应该放在BODY中,并且这似乎是一个合理的数据块,将保留在“正文”中
您的文件将表中不存在的标题“ DATE”列为一列,这可能导致加载数据时出现一次错误的错误,其中将ADDRESS之后的所有数据列发送到错误的列中
修复这些错误的某种组合(也许只需将日期列添加到表中的正确位置就足够了),我相信事情会有所不同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.