Gar*_*ans 2 sql sql-server ssis
我有一个 dtsx 包在我们的 SQL 服务器(2016 SP2 CU6)上的 SSIS 中运行,它是将 Excel (xlsx) 工作表按原样导入到 SQL 表中的轻量级任务,现阶段不需要转换,有一个代理围绕它做了更多的工作,但我可以看到错误发生在这一部分。
我看到的问题是 Excel ( 0.0153)中的一个数字在 SQL 中出现,好像转换得很糟糕 ( 1.5299999999999999E-2)。
确认 Excel 中的数字0.0153不是更长的或格式设置为这样的。
导入后,这就是我所拥有的:-
我觉得这很奇怪:-
0.193841也是类似的,总体范围是 -29 到 200保留 7 位小数)Excel 中的数字格式是General,SQL 中的列是NVARCHAR(255)
在 SSIS 包中,外部列的 Excel 源数据类型被归类为double-precision float [DT-R8](不确定它来自哪里,但我无法更改它)并且输出列是Unicode string [DT-WSTR]
然后我使用Native OLE DB\SQL Server Native Client 11.0OLD DB Connection 来访问表。
它是一个简单的包,但为什么这个值会如此疯狂地跳跃。它不是一次性的,输入有大约 1700 行,我们在许多行上看到了这一点。
在企业环境中,我们不能总是选择源数据和目标数据,有时我们只需要“让它发挥作用”。Excel 是 SSIS 中的噩梦,尤其是,它所需要的只是对输入文件的一个错误更改,并且您的工作由于元数据不再匹配而失败。
是的,理想情况下这是数字数据,应该存储在数字数据字段(而不是字符串/字符字段)中。
这就是我过去完成此场景的方式,希望它适用于您的情况,但实际上取决于结果数据的用途。
2. 添加第二个数据转换步骤,将十进制值转换回 Unicode 字符串
3. 更改 OLE DB 目标映射以使用来自第二个数据转换任务的新输出列。
结果:
| 归档时间: |
|
| 查看次数: |
5407 次 |
| 最近记录: |