【问题标题】:Bulk load data conversion error (truncation) for row 1, column 14 (created)第 1 行第 14 列(已创建)的批量加载数据转换错误(截断)
【发布时间】:2021-04-02 15:43:30
【问题描述】:

需要帮助!

我有一个 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","6","PARTIAL_SETUP","10","EXISTING","1","2021-02-24 14:33:42","2021-02-24 14:33:42"

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

谢谢!

【问题讨论】:

    标签: sql sql-server bulkinsert truncation


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-23
      • 2013-02-16
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 2012-06-23
      相关资源
      最近更新 更多