为什么这个批量插入/加载语句 (SSMS) 抛出转换错误消息?

问题描述 投票:0回答:0

我正在尝试从一组 .csvs 中批量插入数据,并成功创建了每个 .csvs 的相应表;我已经从 mac 中移动了这些文件,所以我在插入中指定了以下内容:

BULK INSERT [dbo].[DimBeat] FROM '$(SqlSamplesSourceDataPath)DimBeat.csv'
WITH (
    CHECK_CONSTRAINTS,
    --CODEPAGE='ACP',
    DATAFILETYPE='char',
    FIELDTERMINATOR=',',
    ROWTERMINATOR='0x0A',
    --KEEPIDENTITY,
    TABLOCK
);

对于所有 Dim 表,相同的 2 条错误消息重复相同。以下是一个给出错误的 csv 的详细信息:2 行,ID 号从 1-300K 递增,以及一个 3 位代码

Create table DimBeat
(
CrimeNumber bigint primary key,
Beat varchar(20) unique not null
)
Go

当我尝试运行批量插入时,给出以下内容

Msg 4864,级别 16,状态 1,第 26 行 第 95631 行第 1 列 (CrimeNumber) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

Msg 4864,级别 16,状态 1,第 26 行 第 191340 行第 1 列 (CrimeNumber) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

我已经在 excel 中直观地检查了 firstsecond,并在 R 中按类型检查了它们,除了它们的大尺寸外,它们与各自列中的其他值没有明显差异;但是我相信它们仍然在 bigint 的范围内

有人知道为什么会发生此错误吗?

sql sql-server ssms bulkinsert
© www.soinside.com 2019 - 2024. All rights reserved.