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

添加Excel目标时出现SSIS错误,求类型映射问题解决方案

解决SSIS Excel目标的类型映射与Unicode转换问题

嘿,我之前也碰到过一模一样的问题,咱们一步步来拆解解决:

1. 先修正Excel目标的创建语法

你现在写的CREATE TABLE是SQL Server的语法,但Excel的OLE DB驱动不认这一套!你用的:

CREATE TABLE `Excel Destination` ( `name` VARCHAR(50), `date` DATETIME )

得改成Excel兼容的写法,而且Excel的文本字段要对应Unicode类型,所以调整成:

CREATE TABLE [Excel Destination] ( name NVARCHAR(50), date DATETIME )

这里把VARCHAR换成NVARCHAR,同时去掉反引号,改用Excel识别的方括号包裹表名,这样驱动才能正确识别字段的Unicode类型。

2. 确认数据转换任务的输出是否真的匹配

你说已经把name列设为Unicode字符串(DT_WSTR),但要核对两个点:

  • 数据转换任务里,输出列的类型确实是DT_WSTR,长度设为50(和Excel目标字段一致)
  • 别犯低级错误:是不是把源列直接连到Excel目标了?一定要确保是转换后的输出列和Excel目标关联

3. 手动强制修正类型映射

如果还是弹出转换提示,直接去Excel目标的高级编辑器里改:

  • 右键Excel目标,选择「显示高级编辑器」
  • 切换到「输入和输出属性」选项卡
  • 找到「Excel Destination输入」→「输入列」,选中name列,确认数据类型是DT_WSTR
  • 再看「Excel Destination输出」→「外部列」,确保name列的类型也是Unicode String [DT_WSTR]
  • 如果映射错了,删掉旧的映射,重新把转换后的输入列拖到对应的外部列上

4. 检查驱动兼容性(容易忽略的点)

SQL Server 2012的SSIS默认可能用32位ACE驱动,如果你用的是64位环境,得调整:

  • 右键SSIS项目→属性,把「Run64BitRuntime」改成False(适配32位驱动)
  • 确保安装了对应版本的Microsoft Access Database Engine(ACE驱动),驱动版本不匹配也会导致类型识别混乱

终极偷懒技巧

要是以上步骤还麻烦,你可以先手动建好Excel文件,在里面提前设置好列:name设为文本类型,date设为日期类型,然后SSIS直接连接这个现成的文件,这样SSIS会自动识别正确的字段类型,省得手动写CREATE TABLE踩坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:51:53