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

批量插入(BULK INSERT)报错求助:UNC与本地路径均无法执行

排查BULK INSERT "Cannot bulk load" 错误的思路

哥们,我来帮你捋捋这个批量插入的问题——你遇到的Cannot bulk load报错其实挺常见的,咱们从路径、权限、语法这几个核心点逐一排查:

  • 路径格式完全错误!
    你试的本地路径'\C\Users\myname\Desktop\testimport.csv'写法不对:首先本地路径得从盘符开头,而且SQL Server字符串里的反斜杠需要转义(用两个反斜杠),或者用正斜杠更省心。正确的本地路径写法应该是:

    'C:\\Users\\myname\\Desktop\\testimport.csv'
    -- 或正斜杠写法
    'C:/Users/myname/Desktop/testimport.csv'
    

    UNC路径的格式是对的,但权限问题是这里的常见坑。

  • 权限是最容易忽略的重灾区!
    划重点:BULK INSERT是以SQL Server服务账户的身份读取文件的,不是你登录SQL的用户账户!

    • 用UNC路径\\FR-6RSGJH2.xyz.st\C$时:要确保SQL Server服务账户(比如默认的NT SERVICE\MSSQLSERVER)拥有该共享文件夹的读取权限,以及目标CSV文件的读取权限。
    • 用本地路径时:桌面是用户私有目录,SQL服务账户大概率访问不到。建议把CSV移到公共目录(比如C:\Temp),再给SQL服务账户分配该目录的读取权限。
  • 语法遗漏了关键解析参数!
    你代码里的W...没写完,BULK INSERT必须明确告诉SQL Server怎么解析你的CSV文件。比如你的文件是逗号分隔、带表头的话,完整语法示例如下:

    BULK INSERT testimport
    FROM '\\FR-6RSGJH2.xyz.st\C$\Users\myname\Desktop\testimport.csv'
    WITH (
        FIELDTERMINATOR = ',', -- 字段分隔符,根据你的文件实际情况调整
        ROWTERMINATOR = '\n', -- 行分隔符
        FIRSTROW = 2, -- 如果第一行是表头,从第二行开始导入数据
        CODEPAGE = 'ACP' -- 字符编码,UTF-8文件请用'65001'
        -- 如果你用了格式文件,加上这一行:FORMATFILE = '你的格式文件完整路径'
    );
    

    缺少这些参数,SQL Server无法正确拆分CSV数据,必然会报错。

  • 最后检查文件本身状态
    确认CSV文件没有被其他程序占用(比如Excel还打开着),同时核对文件编码是否和你指定的CODEPAGE参数匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:29:19