【问题标题】:SSIS:Issue with data from a csv file:SSIS:来自 csv 文件的数据问题:
【发布时间】:2019-09-05 14:42:14
【问题描述】:

CSV 文件中的数据存在问题:我下载了一些 CSV 文件,其中包含一些值,例如:1.21E+11,当值太长时。

如果我转换为 XLS/XLSX 并将字段更改为数字,则可以解决问题,但我想做一些自动化的事情。

【问题讨论】:

  • 使用awk.....!
  • SSIS 不会为您将值转换为数字。在您的目标数据库上转换它或使用自定义脚本任务。
  • EzLo 你有那个脚本的例子吗?

标签: sql-server csv ssis etl scientific-notation


【解决方案1】:

尝试添加类型为 DT_R8 的派生列并使用以下表达式:

(DT_R8)[InputColumn]

如下图,我测试了如下表达式:

(DT_R8)"1.21E+11"

结果是:

121000000000

【讨论】:

  • 在这种情况下不能正常工作 6.10E+11 转换应该是这个 610300000000 但它是 610000000000
  • @AlfredoGarcia 6.10E+11 等于 610000000000。但请注意,在 Microsoft Excel 中,如果值存储为 610300000000,则可能会显示为 6.10E+11,您可以在 Excel 中检索初始值,但在 Excel 外部读取此值时,您无法检索精确值。
  • @AlfredoGarcia 6.10E+11 表示6.10 * 10^10
  • 是的,你说得对,但我需要精确的数字,因为我的系统中存在 ID 或数字
  • 另一件事是从文件中得出的数据类型如何 DT_STR 50 当您转换为 Float 时会出现错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 2017-11-30
  • 2020-06-19
相关资源
最近更新 更多