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

SQL Server BCP导入CSV文件时如何忽略字段可选外层双引号

解决方法

方法一:使用CSV格式原生参数(推荐,兼容带/不带引号的字段)

高版本BCP工具直接加参数

如果你使用的是18.0及以上版本的BCP工具,无需修改格式文件,直接在原有导入命令中添加--format=csv参数即可自动识别并剥离字段外层的双引号:

bcp Database.Schema.Persons in "W:\test_load_data.csv" --format=csv -f Persons.fmt -S tcp:demo.database.windows.net -U User01 -P P@$$word!

T-SQL批量插入

如果BCP版本较低,可直接在Azure SQL中执行BULK INSERT语句完成导入,无需临时表:

BULK INSERT Database.Schema.Persons
FROM 'W:\test_load_data.csv'
WITH (
    FORMAT = 'CSV',
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\r\n',
    FIELDQUOTE = '"',
    FIRSTROW = 1 -- 若CSV文件首行是表头,将此值改为2
);

你也可以通过sqlcmd命令行调用上述T-SQL语句,实现命令行批量导入:

sqlcmd -S tcp:demo.database.windows.net -U User01 -P P@$$word! -Q "BULK INSERT Database.Schema.Persons FROM 'W:\test_load_data.csv' WITH (FORMAT='CSV', FIELDTERMINATOR=',', ROWTERMINATOR='\r\n', FIELDQUOTE='"', FIRSTROW=1)"

方法二:修改BCP格式文件适配引号场景

如果必须使用低版本BCP工具原生导入,可以调整格式文件的终止符规则,增加虚拟字段自动过滤双引号,修改后的Persons.fmt内容如下:

13.0
3
1       SQLCHAR             0       255     ","      1     LastName               SQL_Latin1_General_CP1_CI_AS
2       SQLCHAR             0       1       "\""      0     QuotePrefix            ""
3       SQLCHAR             0       255     "\"\r\n"  2     FirstName              SQL_Latin1_General_CP1_CI_AS

说明:新增的第2行是序号为0的虚拟字段,不会映射到目标表,作用是自动匹配并丢弃FirstName字段前的双引号;同时将FirstName的终止符设置为"\r\n,自动丢弃字段末尾的双引号。对于不带双引号的FirstName场景,可在导入后执行一次UPDATE Database.Schema.Persons SET FirstName = TRIM('"' FROM FirstName)即可完成清理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:06:03