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

如何使用OPENROWSET导出分号分隔、无引号的CSV数据

解决方案

方法1:使用schema.ini配置文件(推荐)

Microsoft ACE OLEDB驱动读取文本文件格式时会优先读取导出目录下的schema.ini配置文件,你可以通过该文件自定义分隔符、引号规则等参数:

  1. 在你的导出目录C:\shared_files下新建名为schema.ini的文本文件,写入以下配置:
[existing_file.csv]
Format=Delimited(;)
ColNameHeader=True
CharacterSet=65001
TextDelimiter=none

参数说明:

  • Format=Delimited(;):指定字段分隔符为分号
  • ColNameHeader=True:保留第一行作为表头
  • CharacterSet=65001:指定导出文件编码为UTF-8,如需使用GBK编码可替换为936,ANSI编码替换为1252
  • TextDelimiter=none:取消字段两端的引号包裹
    如果需要修改导出文件后缀,只需将schema.ini中括号内的文件名替换为你的实际文件名即可。
  1. 无需修改你原有的OPENROWSET查询语句,直接执行即可得到符合要求的导出结果。

方法2:字段拼接导出(无需修改配置文件)

如果不想新增配置文件,你可以直接在SELECT语句中将所有字段按分号拼接为单个字段输出,此时驱动不会自动添加引号:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\shared_files;HDR=YES;FMT=Delimited','SELECT * FROM [existing_file.csv]')
SELECT CONCAT(
    CAST(field_A AS VARCHAR(10)), 
    ';', 
    field_B, 
    ';', 
    field_C
) FROM myTable

注意:如果字段存在空值,建议使用ISNULL(字段名, '')处理避免拼接结果出现NULL。

注意事项

  • 需保证SQL Server服务运行账号拥有C:\shared_files目录的读写权限
  • 安装的Microsoft Access Database Engine(ACE驱动)位数需与SQL Server版本位数一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:06:05