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

从FileMaker导入数据到SQL Server的SSIS包数据类型错误求助

问题描述

我正在创建SSIS包,将FileMaker 19.2.2的数据导入SQL Server 2019。已配置32位ODBC连接到布局,可在SSIS源编辑器中访问源系统并查看样本数据,无异常。我已将ODBC源映射到OLE DB SQL Server目标,并添加了数据转换步骤,但仅能加载四个测试列中的一个,持续遇到如下数据类型错误:

[OLE DB Destination [436]] 错误:为"NameFirst"列设置绑定时出错。绑定状态为"DT_NTEXT"。数据流列类型为"DBBINDSTATUS_UNSUPPORTEDCONVERSION"。从OLE DB类型"DBTYPE_IUNKNOWN"转换为目标列类型"DBTYPE_WVARCHAR"可能不受此提供程序支持。

[OLE DB Destination [436]] 错误:为"NameLast"列设置绑定时出错。绑定状态为"DT_NTEXT"。

[OLE DB Destination [436]] 错误:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。
存在可用的OLE DB记录。源:"Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 描述:"Invalid character value for cast specification"。
存在可用的OLE DB记录。源:"Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 描述:"Invalid date format"。

待加载的源元数据:

NameData TypePrecisionScaleLengthCode PageSource Component
CreatedDT_DBTIMESTAMP0000ODBC Source
KeyEmployeeDT_TEXT0001252ODBC Source
ModifiedDT_DBTIMESTAMP0000ODBC Source
NameFirstDT_TEXT0001252ODBC Source
NameLastDT_TEXT0001252ODBC Source
EmployeeIDDT_TEXT0001252ODBC Source
EmploymentDateDT_DBDATE0000ODBC Source

请问是否有人成功创建过从FileMaker拉取数据的SSIS包?希望能得到帮助。


解决方案

1. 修复文本列类型转换问题

FileMaker ODBC驱动返回的DT_TEXT类型无法直接映射到SQL Server的VARCHAR/NVARCHAR,需通过Data Conversion组件显式转换:

  • 拖拽Data Conversion组件到数据流,连接ODBC Source到该组件
  • 选择所有DT_TEXT类型列(KeyEmployee、NameFirst、NameLast、EmployeeID),将其转换为DT_STR(对应SQL VARCHAR,代码页选1252)或DT_WSTR(对应SQL NVARCHAR,支持Unicode)
  • 将转换后的列而非原始列映射到OLE DB Destination的对应字段

2. 解决日期格式错误

错误提示的"Invalid date format"通常是因为FileMaker的日期格式与SQL Server解析规则不匹配,或存在无效日期值:

  • 显式转换日期:先用Data Conversion将DT_DBTIMESTAMP/DT_DBDATE转为DT_WSTR(长度设为20足够),再用Derived Column组件通过表达式(DT_DBTIMESTAMP)[转换后的日期字符串]强制转换为SSIS日期类型,之后再映射到目标列
  • 过滤无效数据:添加Conditional Split组件,用ISDATE([EmploymentDate]) == True等条件过滤掉格式错误的日期行,或者用NULL(DT_DBDATE)替换无效值
  • 检查FileMaker数据:确认FileMaker布局中的日期字段是否包含空值、非标准格式(如带文字描述的日期),必要时在FileMaker端先清理数据

3. 32位环境适配

由于使用32位ODBC驱动,需确保SSIS包运行环境一致:

  • 在Visual Studio中,右键项目 -> 属性 -> 调试 -> 将Run64BitRuntime设为False
  • 部署到SQL Server后,需用32位DTEXEC执行包,或者在SQL Server Agent作业中选择"使用32位运行时"选项

4. 替代优化方案

如果上述方法仍有问题,可尝试:

  • 使用FileMaker官方提供的OLE DB驱动(若对应版本可用),其数据类型映射通常比ODBC更精准,减少转换报错概率
  • 先通过FileMaker导出数据为CSV/Excel,再用SSIS导入,但这种方式适合小批量数据,实时性差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:40