SQL Server 2012批量插入类型不匹配错误

时间:2017-01-11 13:09:20

标签: sql-server sql-server-2012 bulkinsert

我是初学者,只是学习SQL-Server,我似乎已经使用BULK INSERT打了一针。我潜伏在类似的线程中,但我有两种类型不匹配的错误,我根本想不通。

这是表(psuedo-SQL)

CREATE TABLE patient (
    Acct bigint primary key,
    FacNo varchar(50) not null,
    AccountKey varchar(50) not null,
    LastName varchar(50),
    FirstName varchar(50),
    MI varchar(5),
    RespName varchar(50),
    Address varchar(50),
    City varchar(50),
    State varchar(5),
    ZipCode varchar(15),
    ReasonDesc varchar(50),
    HomePhone varchar(18),
    Sex varchar(5),
    BirthDate datetime,
    SSN varchar(50),
    MaritalStat varchar(10),
    EmployedStatus varchar(5),
    Employer varchar(50),
    EmpAddr varchar(50),
    EmpCity varchar(50),
    EmpState char(15),
    EmpZip varchar(15),
    WorkPhone varchar(18),
    WorkPhoneExt varchar(5),
    RelatedToEmploy char(15),
    RelatedToAccident char(15),
    AutoState varchar(5),
    ADOS datetime,
    BDOS datetime,
    -- some fields
    PTOS decimal(10,2),
    -- and some more fields
    )

这是我的BULK INSERT声明

BULK INSERT patient
FROM patient.csv 
WITH (
  FIRSTROW = 2, 
  FIELDTERMINATOR = ',', 
  ROWTERMINATOR = '\n'
)

返回的错误是

  

4864,批量加载数据转换错误(类型不匹配或无效   行347,第29列的指定代码页的字符   (ADOS)

     

4864,批量加载数据转换错误(类型不匹配或无效   行347,第49列(PTOS)

的指定代码页的字符)

在抛出错误的两个位置都有

  • 没有多余的空格
  • 没有隐藏的字符
  • 值的格式与之前的346个相似类型值相同。

在数据文件中,patient.csv所有日期时间列的格式为MM / DD / YYYY hh:mm:ss(ADOS也不例外),PTOS实际上只是0.00的整列

那么为什么只有在第347行才会出现错误?

0 个答案:

没有答案