【问题标题】:ssis ETL dates into Excelssis ETL 日期到 Excel
【发布时间】:2017-01-12 12:54:28
【问题描述】:

我正在使用 SSIS ETL(我是新手)并尝试从格式为“08/03/2013 00:00:00”的 SQL 服务器表中提取日期到 Excel 2013 文件。我需要 Excel 中的日期格式为“dd/mm/yyyy”,它们必须保留为日期,以便保留层次结构。即,当您对列进行自动过滤时,您可以看到日期组。数据列中也有一些空条目。

我在 ETL 脚本中尝试过的事情:- 1)从 SQL 表到 Excel 文件的直接转换 - 结果“2013-03-08 00:00:00”,yyyy/mm/dd ss:ss:ss 没有层次结构。我尝试更改 Excel 列格式,但无论我选择什么日期都保持不变。 2)然后我向 ETL 添加了日期转换,将 SQL 日期更改为 DT_DATE - 结果“3/8/2013”​​,m/d/yyyy,没有层次结构。 3)然后我尝试了日期转换,将 SQL 日期更改为 DTW_STR - 结果“2013/03/08 00:00:00”,yyyy/mm/dd ss:ss:ss 没有层次结构。 4)然后我尝试了各种 ETL 到字符串的转换,但 Excel 都没有将其识别为日期,因此没有层次结构。

我无法将用户“重新教育”到“yyyy/mm/dd”的新日期格式 我不是一个强大的编码员,所以如果可能的话,我更愿意在 ETL 中执行此操作。

所以总结一下我需要 Excel 中的日期是可以按 dd/mm/yyyy 格式分组的实际日期。

【问题讨论】:

  • 不是一个理想的解决方案,但您可以尝试在输出的 Excel 中添加另一列,在其中您可以使用 DATEVALUE 函数将文本转换为 Excel 数据,然后进行适当的格式化?
  • 只是一个想法,但您是否与使用 SSIS 相关?您可以参考的数据连接 Excel 表是否是合适的替代方案? support.office.com/en-us/article/…
  • 感谢您的建议,我只是希望 SSIS ETL 与 Excel 兼容,ETL 已经被用于处理文件,我猜它的设计考虑了提取而不是尝试填充返回 Excel。

标签: sql-server excel date ssis etl


【解决方案1】:

我认为应该尝试使用派生列转换。

派生列名:newDate

派生列:替换“originalDate”

表达式: RIGHT("0" + (DT_WSTR, 2)DATEPART("dd", [originalDate]), 2) + "/" + RIGHT("0" + (DT_WSTR, 2) DATEPART("mm", [originalDate]), 2) + "/" + (DT_WSTR, 4)DATEPART("yyyy", [originalDate])

这将获取每个部分并将其转换为字符串格式,以便我们可以将它们连接回我们想要的格式。如果 excel 无法识别,您可能需要将所有内容括在括号中并将其转换回日期格式。 (DT_DATE)(...)

【讨论】:

  • 我尝试了乔纳森的建议。但是,无论在 Excel 中打开日期时的 ETL 格式如何,它们都被视为文本。目前有人手动运行 VBA 脚本将所有条目转换为日期,我希望我可以在 ETL 中做一些事情来消除手动干预。认为我将不得不调查运行 VB 脚本来进行转换。
猜你喜欢
  • 2020-02-14
  • 1970-01-01
  • 2021-05-15
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2010-11-05
  • 1970-01-01
相关资源
最近更新 更多