【问题标题】:SQL Server data tools derived columnSQL Server 数据工具派生列
【发布时间】:2014-08-02 19:33:30
【问题描述】:

我的SQL老师把一个Excel文件转成.csv文件

我的问题是 .csv 文件已将日期值 (dd-mm-yy) 更改为奇怪的数字。这是一个大问题,因为我的 SQL Server 数据库需要一个日期值而不是一个奇怪的数字 + 字符。我正在使用 SISS 来解决这个问题,但我不知道如何解决它。我对 SSIS 很陌生。

CSV 中的日期示例:41640

SSIS 数据查看器中的日期示例:1;1;41640;41641;41646(奇怪的代码而不是日期)

我的 SQL 老师说我们必须使用派生列来解决这个问题,他还谈到了 Pivot 和 Unpivot 工具。你们能不能给我们一些例子,如何用派生列解决这个问题?

我无法发布任何图片来更清楚地说明其含义。因为我需要 10 声望才能发布图片:(

我正在使用平面文件源调用我的.csv,然后我放置了一个空的派生列(以解决.csv 日期问题)。之后我有一个Date 转换,然后是一个派生列(用于修剪新数据)

希望大家能帮帮我!

【问题讨论】:

  • 那些 416xx 数字看起来很像 Excel 日期。您的数据是否来自 Excel? SSIS 中定义的传入列是什么数据类型?
  • 日期从 Excel 转换为 csv 文件。所以是的,我的日期来自 csv。 (excel) 文件。我使用数据类型字符串 [DT_STR]

标签: sql csv ssis


【解决方案1】:

您需要添加一个添加派生或计算列的步骤。在包含例如的列中41640 我假设列名是 xyz。

新的计算列将使用公式 DateAdd(DD, [xyz], '31 Dec 1899') 并且是 DT_DATE 类型。

对于 Excel,1900 年 1 月 1 日的日期由数字 1 表示。因此您需要将这些数字转换为日期。我不能 100% 确定公式语法,因为我在这台机器上没有 SSIS。

【讨论】:

    猜你喜欢
    • 2015-10-26
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2010-10-18
    • 2019-05-29
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多