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

使用SSMS导入TXT数据到SQL Server时所有字段存入单列的问题

问题根因

你遇到的导入异常是因为SSMS导入向导默认仅预设了单字符分隔符选项,你使用的~*属于双字符组合分隔符,未正确配置的情况下系统无法识别字段拆分规则,会将整行内容存入同一列,同时保留原始分隔符字符。

解决方案

可按优先顺序选择以下任意一种方案处理:

  • 方案1:预处理源文件(操作最简单)
    打开TXT文件,全局替换所有~*为源数据中不存在的单字符分隔符,例如竖线|、制表符等,替换完成后重新打开SSMS导入向导,选择对应单字符作为分隔符即可正常拆分字段。
  • 方案2:导入向导自定义多字符分隔符(无需修改源文件)
    1. 打开SSMS导入向导,数据源选择「平面文件源」,选中目标TXT文件
    2. 切换到「列」配置页,直接在「列分隔符」输入框中手动输入~*(不要选择下拉框内的预设选项)
    3. 点击「刷新」按钮,若预览区已正常拆分多列,继续完成后续导入流程即可
      注:部分旧版本SSMS不支持手动输入多字符分隔符,可更换为方案3
  • 方案3:用BULK INSERT命令导入(灵活性最高)
    直接在SSMS查询窗口执行SQL命令导入,原生支持多字符分隔符配置,示例代码如下:
    BULK INSERT 你的目标表名
    FROM 'C:\你的文件存储路径\数据文件.txt'
    WITH (
      FIELDTERMINATOR = '~*', -- 指定字段分隔符为~*
      ROWTERMINATOR = '\r\n', -- Windows系统生成的TXT行分隔符为\r\n,Linux/Mac生成的为\n
      CODEPAGE = '65001', -- 文件编码为UTF-8填65001,GBK编码填936
      FIRSTROW = 1 -- 若文件第一行是表头则填2,无表头填1
    );
    
    若你的文件每行末尾也带有~*,导入后会生成最后一个空列,可在导入完成后手动删除该空列即可。
编码异常排查

如果拆分字段后出现乱码,可先通过记事本打开源文件,选择「另存为」查看底部的编码类型,回到导入向导的「常规」配置页,将「代码页」选项和文件实际编码匹配即可解决乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:03