gpt4 book ai didi

ssis - 如何将文件中的 mm/dd/yyyy 值导入格式为 yyyy-mm-dd 的数据库字段?

转载 作者:行者123 更新时间:2023-12-03 08:23:22 25 4
gpt4 key购买 nike

我有一个 CSV 文件,日期列的格式如下 mm/dd/yyyy (4/20/2012),我需要将此列加载到数据库中,该数据库的日期时间列为yyyy-mm-dd (2012-04-20)。

我为此使用了派生列转换,并编写了类似的表达式

(DT_WSTR)(SUBSTRING(ReceivedDateTime,1,4) + "-" + 
SUBSTRING(ReceivedDateTime,5,2) + "-" + SUBSTRING(ReceivedDateTime,7,2))

在运行我的包时,它抛出错误 Unable to perform type cast

最佳答案

如果来自 CSV 文件的传入值始终采用类似 04/20/2012 的格式( MM/DD/YYYY ),那么您不必执行任何类型转换。您只需配置平面文件连接管理器,将文件中的值视为 date。数据类型。

让我们假设您的 CSV 文件看起来像这样,其中有一列包含 .

CSV file

在 SSIS 包中,创建一个平面文件连接管理器来读取 CSV 文件。我将 CSV 存储在路径 C:\temp\Source.csv

Flat file source general section

关于Advanced部分,您会注意到平面文件连接管理器将第一列命名为 Column1并且 DataType 属性设置为 string [DT_STR] .但是,文件中的值实际上是日期。您可以手动配置数据类型或单击 Suggest Types... 按钮。

Advanced Suggest Types

建议列类型 上,保留默认值并单击确定。这将读取文件的前 100 行,并根据文件中可用的数据确定列类型。

Suggest column types

单击 OK 后在 Suggest Column Types 对话框中,您会注意到平面文件连接管理器上的数据类型为 Column 0已更改为 date [DT_Date] 。单击确定 以配置平面文件连接管理器。您还可以根据您的要求重命名该列(比如 InvoiceDateOrderDate 等)

Data type changed

现在您已经配置了平面文件连接管理器,您可以在数据流任务中的平面文件源中使用它来读取数据并填充数据库。因此,无需使用派生列转换来操作值。

但是,如果您传入的文件值是类似 120420 (YYMMDD) 的字符串,这些值不能配置为日期数据类型。在这些场景中,您需要使用 Derived Column 转换为 suggested in this answer .

希望对您有所帮助。

关于ssis - 如何将文件中的 mm/dd/yyyy 值导入格式为 yyyy-mm-dd 的数据库字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com