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

PowerShell调用BCP导入SQL Server遇QUOTED_IDENTIFIER错误如何解决

问题根因

  1. 初始的QUOTED_IDENTIFIER报错:包含计算列、特殊索引的表要求SQL会话开启QUOTED_IDENTIFIER ON配置,而BCP工具默认关闭该配置,需要通过-q参数开启。
  2. 加-q后报对象不存在:-q参数自带标识符转义逻辑,会自动为传入的表名加上方括号,你手动给表名加的方括号和该逻辑冲突,导致BCP最终识别的表名为嵌套方括号的错误格式[[reference]]].[Provider]],自然无法匹配到正确的表。

解决方法

构造BCP命令时表名不需要手动加方括号,保留-q参数即可,文件路径如果包含特殊字符可以用双引号包裹(PowerShell中用两个双引号转义为单个双引号),正确写法如下:

PS> $bcpImport = "bcp $($data[33].schema_name).$($data[33].name) in ""C:\tmp\[$($data[33].schema_name)].[$($data[33].name)].bcp"" -f ""C:\tmp\[$($data[33].schema_name)].[$($data[33].name)].xml"" -E -d $Database -S $LittleServer -T -q"

PS> $bcpImport
# 解析后的命令格式如下
bcp reference.Provider in "C:\tmp\[reference].[Provider].bcp" -f "C:\tmp\[reference].[Provider].xml" -E -d Test -S localhost\SQLEXPR2014 -T -q

PS> Invoke-Expression $bcpImport

该写法会让-q参数正常开启QUOTED_IDENTIFIER ON,同时自动为表名添加方括号,不会出现标识符嵌套的问题,可以正常导入数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:36:03