You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server导入其余CSV正常 仅plays.csv导入报错如何解决

SQL Server导入plays.csv截断报错修复方案

核心报错原因

反复调整字段类型仍然报错的核心原因根本不是quarter字段本身长度/类型不匹配,是初始导入配置的两个错误导致列错位:

  • 未设置文本限定符:Kaggle提供的标准CSV文件用双引号包裹含逗号、换行的长文本内容(比如战术描述、备注字段),把Text Qualifier设为none后,解析器会把文本内容里的逗号当成分隔符拆列,直接导致字段错位——本该落到长文本列的内容被错分到quarter列,自然触发截断报错,报错提示明确指向第3行数据出错,就是因为前两行数据没有带逗号的包裹文本,到第三行碰到带逗号的战术描述就出现列错位。
  • 编码配置错误:未勾选Unicode、选择1252(ANSI-拉丁I)代码页的配置,碰到球员名里的重音字符、特殊标点时会触发字符不匹配错误,和截断报错叠加出现。

分步修复操作

  1. 重新启动SQL Server导入导出向导,在Flat File Source配置页调整以下参数:
    • 将Text Qualifier设置为双引号"
    • 勾选Unicode选项,自动适配UTF-8编码,不再使用1252代码页
    • 其余分隔符、表头配置保持原有设置不变
  2. 进入列映射配置环节时,不要全用默认参数:
    • 将quarter、down、yardlineNumber这类数值字段对应目标表的int/tinyint类型
    • 将playDescription、playType这类字符串字段的默认长度从50调整为2000,或者直接设为NVARCHAR(MAX),避免真实长文本内容触发截断
  3. (可选)如果需要快速验证配置是否正确,可以在高级设置里临时把所有列的截断处置规则从“截断即报错”改成“忽略截断”,先导入100行数据核对字段对齐情况,确认没有列错位、内容缺失后再全量导入。

快速替代方案

如果不想反复调整向导配置,可以直接在SSMS里执行BULK INSERT命令完成导入,稳定性比可视化向导更高,参考代码如下:

-- 提前建好目标表,字符串字段统一设为NVARCHAR(2000)避免长度不足
BULK INSERT dbo.plays
FROM 'C:\Users\Owner\Desktop\nflcomp\plays.csv'
WITH (
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '0x0a',
    CODEPAGE = '65001',
    TABLOCK
);

验证小技巧:直接用记事本打开本地plays.csv定位到第3行,就能看到该行存在被双引号包裹、内部带逗号的长文本内容,这就是之前列错位的直接证据。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:51:34