gpt4 book ai didi

SQL Server 2008 SSIS : Importing date field incorrectly (from Oracle)

转载 作者:行者123 更新时间:2023-12-02 05:08:07 25 4
gpt4 key购买 nike

我必须导入的文件 (CSV) 中的日期字段采用 DD-MMM-YY 格式,SQL Server 将其导入为 YY-MM-DD 。因此,01-FEB-13 将导入为 2001-02-13

如何更改 SQL 用于导入日期的格式?

我无权访问原始 Oracle 数据库,只能访问从中导出的平面文件。所以我所做的几乎所有事情都必须在 SQL 中完成。

最佳答案

更改 SQL Server 默认使用的日期格式需要修改 Windows 服务器区域性设置。 不是一个好主意,特别是如果这是您遇到此问题的唯一文件。

我将使用脚本转换和 .NET Framework 的 DateTime.ParseExact方法,它可以让您完全控制预期的格式。首先配置用于读取 CSV 文件的平面文件连接管理器,以便将日期为 DD-MMM-YY 的列的 DataType 设置为 stringUnicode 字符串 而不是 日期数据库日期 或任何其他特定于日期的类型: enter image description here

在数据流中,在源组件和目标组件之间放置脚本转换,如下所示: enter image description here

选择每个 DD-MMM-YY 日期列作为脚本转换的输入: enter image description here

并创建一个输出列,其 DataTypedate 对应于每个输入列: enter image description here

脚本转换代码将如下所示(使用 C#)

using System;
using System.Data;
using System.Globalization; // needed for CultureInfo.InvariantCulture
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void IncomingRows_ProcessInputRow(IncomingRowsBuffer Row)
{
string incomingFormat = "dd-MMM-yy";
Row.ConvertedCreateDate = DateTime.ParseExact(
Row.CreateDate,
incomingFormat,
CultureInfo.InvariantCulture);
Row.ConvertedLastUpdateDate = DateTime.ParseExact(
Row.LastUpdateDate,
incomingFormat,
CultureInfo.InvariantCulture);
}
}

关于SQL Server 2008 SSIS : Importing date field incorrectly (from Oracle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091642/

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