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

如何使用BULK INSERT将CSV数据批量插入带自增主键的SQL表?

嘿,我来给你一步步讲清楚怎么用BULK INSERT把CSV数据导入你的Table1里~

使用BULK INSERT批量导入CSV的完整步骤

1. 先确认CSV文件的格式要求

首先得保证你的CSV和Table1的列(Version, Date, Code)完全匹配,顺序不能乱,还要注意这些细节:

  • 每行数据用逗号分隔(如果字段里本身有逗号,后面会说怎么处理)
  • 日期必须是YYYY-MM-DD格式,和你之前插入的一致,避免导入时日期转换报错
  • 如果CSV第一行是表头(比如写了Version,Date,Code),后续导入要记得跳过这一行

2. 编写适配你的表的BULK INSERT语句

这是核心部分,我已经给你适配好Table1的结构了,直接改文件路径就行:

BULK INSERT Table1
FROM 'C:\你的文件路径\你的数据文件.csv' -- 替换成你实际的CSV绝对路径
WITH (
    FIELDTERMINATOR = ',', -- CSV默认的字段分隔符是逗号
    ROWTERMINATOR = '\n', -- 行分隔符,Windows系统如果导入失败可以换成'\r\n'试试
    FIRSTROW = 2, -- 如果你有表头就写2跳过第一行;没有表头就写1
    TABLOCK, -- 加表锁能大幅提升批量导入的性能
    -- 划重点:你的Id是IDENTITY自增列,数据库会自动生成,所以不需要从CSV导入,不用加KEEPIDENTITY参数
);

3. 必须注意的几个坑

  • 权限问题:SQL Server的服务账号需要能读取你的CSV文件路径!如果是本地文件,要确保服务账号有该文件夹的读取权限;如果是网络共享文件,要用\\服务器名\共享文件夹\文件.csv的格式,同时给服务账号开共享权限
  • 数据类型匹配:CSV里的Version和Code不能超过VARCHAR(10)的长度,比如Code要是有11位字符就会报错;日期必须是合法的YYYY-MM-DD格式,不能是MM/DD/YYYY这种
  • 特殊字符处理:如果你的字段里包含逗号(比如Code是AB,CD),那要在WITH里加QUOTE = '"'参数,同时CSV里要用双引号把这个字段包起来,比如"1.0","2018-04-16","AB,CD",这样逗号就不会被当成分隔符了
  • 先测小批量:别上来就导全量数据,先拿几行测试数据跑一遍,没问题再导全部

4. 举个实际例子

假设你的CSV没有表头,内容是:

1.0,2018-04-17,9999
1.1,2018-04-18,8888
1.0,2018-04-19,7777

那对应的导入语句就是:

BULK INSERT Table1
FROM 'C:\Data\new_table1_data.csv'
WITH (
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n',
    FIRSTROW = 1,
    TABLOCK
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:15:00