问题描述
需要帮助,请!
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 之前版本的解决方法,不再需要。并且只有当您的所有字段都使用 "
分隔时,该解决方法才有效,这在您的文件中并非如此,并且是导致错误的原因。