第 1 行第 14 列创建的批量加载数据转换错误截断

问题描述

需要帮助,请!

我有一个 sql Server 表:

CREATE TABLE [dbo].[WSaccount]
(
    [id] [varchar](21) NOT NULL,[account_category] [varchar](255) NULL,[account_code] [varchar](255) NULL,[account_number] [varchar](255) NULL,[account_sub_code] [varchar](255) NULL,[balance] [varchar](24) NULL,[creator] [varchar](255) NULL,[open_date] [varchar](25) NULL,[product_code] [varchar](255) NULL,[status] [varchar](255) NULL,[suffix] [varchar](255) NULL,[vintage] [varchar](255) NULL,[product_fk] [varchar](30) NULL,[created] [varchar](25) NULL,[last_update] [varchar](26) NULL
)

我正在执行这个“BULK INSERT”语句:

BULK INSERT WSaccount
FROM 'G:\SymitarDrop\BottomLineDrop\account.csv' 
WITH (FIELDTERMINATOR = '","',ROWTERMINATOR = '0x0a');

但我收到错误

消息 4863,级别 16,状态 1,第 3 行
第 1 行第 14 列(已创建)的批量加载数据转换错误(截断)。

这是 account.csv 文件的示例(注意:每条记录的末尾都有一个“LF”):

1,"dem_dep","6","0000337521","","CORE","2021-02-24","PARTIAL_SETUP","10","EXISTING","1","2021-02-24 14:33:42","2021-02-24 14:33:42"

我正在绞尽脑汁。有什么想法吗?

谢谢!

解决方法

指定处理引用字段的 FORMAT='CSV',您只需指定非默认 ROWTERMINATOR。请参阅文档 BULK INSERT -- FORMAT,因此:

BULK INSERT WSaccount
FROM 'G:\SymitarDrop\BottomLineDrop\account.csv' 
WITH (FORMAT= 'CSV',ROWTERMINATOR = '0x0a');

使用 FIELDTERMINATOR = '","' 是 SQL Server 2017 之前版本的解决方法,不再需要。并且只有当您的所有字段都使用 " 分隔时,该解决方法才有效,这在您的文件中并非如此,并且是导致错误的原因。