【问题标题】:Reading dates from an excel file in SSIS. SSIS reads dates in a different format从 SSIS 中的 excel 文件中读取日期。 SSIS 以不同的格式读取日期
【发布时间】:2019-10-18 20:13:56
【问题描述】:

一个 excel 文件的所有日期格式为 MM/dd/yy,我通过 c# 脚本在 SSIS 中读取它,但在循环浏览记录时,我注意到某些日期被读取为 dd/MM/yy。 Excel 或 SSIS 不知何故弄乱了日期格式。由于某些日期的格式正确为 MM/dd/yy,我无法找出哪些格式正确,哪些不是。有没有办法确保以特定日期格式读取 Excel 工作表?

我尝试在连接字符串中将 IMEX 的配置更改为 1。 还尝试在代码中识别日期,但这是不可能的,因为 01-02-2019 可能是 1 月 2 日或 2 月 1 日。

我使用的连接字符串如下所示:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";Extended Properties=" + "\"" + "EXCEL 12.0 XML; HDR=NO; IMEX=1" + "\"";

我在脚本中打开 excel 文件并遍历行。

excel 的日期如下:

  • 19 年 1 月 31 日
  • 01/02/19
  • 08/19/19
  • 07/06/19

当我在 SSIS 中阅读它时,我会得到以下结果:

  • 19 年 1 月 31 日
  • 02/01/19
  • 19/08/19
  • 06/07/19

如您所见,某些行的日期格式发生了变化。

有没有办法确保所有读取日期的格式?

【问题讨论】:

  • 如果我正确地读取了您的 source 数据(excel),它们是 not 正如您提到的那样标准化 - 例如31/01/19 19/08/19 不是 MM/dd/yy。那就是说你会有问题 - 01/02/19 是 1 月还是 2 月?
  • 感谢您的回复,样本不正确。示例如下:EXCEL 01/12/2019 08/19/2019 当它在 SSIS 中由 C# 准备好时,它可能会有所不同,有时它被正确读取,对于某些 excel 文件,我得到:01/12/2019 19/08/2019 我的意思是,EXCEL 文件中的值,即使我格式化它们,它们的格式并不总是相同。

标签: c# .net excel ssis


【解决方案1】:

Excel 主要是罪魁祸首。它在 SSIS 上强制使用自己的数据类型。如果您可以将该列转换为文本,这是一个好的开始。 (但主要是用户输入对吗?所以可能不是)

问题可能是,如果机器(服务器/用户)上的区域设置不一样,格式就会不一样,因为 Excel 很大程度上是由区域设置驱动的。 (但如果这一切都在同一台机器上,那么相关性就没有那么大了)

我看到的第二个问题是 SSIS 转换为 DATE 不一致。在 SSIS 中的大多数 Excel 日期列中,我将列转换为 Unicode,然后使用 SUBSTRING 和 + 在表达式中构建它。 (虽然在大多数情况下解决问题之前它很愚蠢。所以我一直坚持下去。)

因此我的建议是,使用字符串函数构建您想要的日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2020-10-12
    相关资源
    最近更新 更多