【问题标题】:ssis convert data from source to destinationssis 将数据从源转换为目标
【发布时间】:2015-07-14 06:43:52
【问题描述】:

我在 excel 源中有以下数据:

Date: 1-Jun-15
Received: 10
Answered: 9
AvgWaitTime: 0:00:05
AvgHandleTime: 0:00:07
Abandoned: 1

目标表如下:

Date date,
Received float,
Answered float,
AvgWaitTime time(7),
AvgHandleTime time(7),
Abandoned float

当我尝试导入数据时,我在输入列日期中出现错误,因为 sql 无法将其转换为日期格式。我通过根据 sql 给出的建议创建一个新表来超越这一点。在新表中,日期列的数据类型是日期时间。然后我卡在 AvgWaitTime 中,因为 sql 无法将其转换为时间格式。

有没有办法从源转换所有需要的列数据,然后把它放到目的地?提前致谢。

【问题讨论】:

  • 无论您遇到什么错误,都不建议使用datetime 列。如果要解析字符串,则需要使用适当的转换(例如派生列),而不是创建新表。顺便说一句,如果要存储十进制值,请使用 numeric 类型,而不是浮点数
  • 您可以使用Data Conversion 转换来更改列的类型。数据类型列表is here。仅日期类型是 DT_DBDATE。对于 time(0),您可以使用 DT_DBTIME,对于 time(7),您可以使用 DT_DBTIME2

标签: sql-server ssis


【解决方案1】:

在目标表中,您可以将列日期的类型更改为字符串。它应该工作。然后,您可以使用放置在源和目标之间的任务中的派生列将其更改回日期(键入日期时间,派生列选项卡使用替换)。以下未经测试的代码:

> (DT_DATE)("20" + 
>     SUBSTRING([ReceivedDt], 1, 2)  + "-" + 
>     SUBSTRING([ReceivedDt], 3, 2)  + "-" +
>     SUBSTRING([ReceivedDt], 5, 2))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多