【发布时间】:2018-02-15 19:05:21
【问题描述】:
在尝试将 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)
将正文列更改为第一列的开头后,代码似乎工作正常。我无法找出发生此错误的原因。
【问题讨论】:
-
您的文件不应在批量插入操作中包含标题。在批量插入中,所有行都应该只是数据行;标题行会导致问题。请参阅 Microsoft 的 guidance 关于此“FIRSTROW 属性不打算跳过列标题。BULK INSERT 语句不支持跳过标题。”请删除标题和
FIRSTROW属性并重试。您还可以确认您提供的是出现错误的行中的数据吗? -
您插入的文件是否正确?源文件是
.txt,但您已表明您正在导入.csv? -
您可能会因为引用之间的选项卡而出现错误“申请第三最佳商学院的 MBA,住宅校园,100% 安置,教育贷款助理,可用奖学金 - 未接电话 08030072318 / www .gibsbschool.com"
-
@Rakib 我不知道微软的指导。感谢那。但我仍然遇到同样的错误。而且我正在使用 .tsv 文件,因为在我的情况下,逗号似乎不能用作分隔符。
-
我最初的想法是,但是在notepad++中打印了不可打印的字符后,我发现引号内实际上没有制表符。
标签: sql sql-server csv