使用导入向导导入平面文件时“无效的日期格式”

时间:2013-02-01 16:15:45

标签: sql sql-server import

下午好,

我有一个我无法弄清楚的困境。我试图在SQL数据库表中导入一个平面文件,但我遇到了问题。我在SQL中的列是出生日期DOB的日期时间列。提供给我的提取平面文件将此列作为日期...因此当我导入到SQL时,我得到:

Messages
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "Invalid date format".
 (SQL Server Import and Export Wizard)

Error 0xc020901c: Data Flow Task 1: There was an error with input column "DOB" (212) on input "Destination Input" (147). The column status returned was: "Conversion failed because the data value overflowed the specified type.".
 (SQL Server Import and Export Wizard)

Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "input "Destination Input" (147)" failed because error code 0xC020907A occurred, and the error row disposition on "input "Destination Input" (147)" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
 (SQL Server Import and Export Wizard)

我试图弄清楚如何将00:00:00.000之类的随机时间添加到平面文件中的每个DOB。例如,他们发送给我1983-11-30,但我想使用1983-11-30 00:00:00.000

有没有办法做到这一点,或者有没有人知道我能做什么?提前致谢

5 个答案:

答案 0 :(得分:1)

MSSQL将像您这样的yyyy-MM-dd字符串转换为日期没有问题。您最终会自动获得00:00:00.000。您发布的错误消息“转换失败,因为数据值溢出指定的类型”表示其中一个日期超出了有效范围。您很可能获得了无效的出生日期(寻找0000-00-00记录或类似记录)。如果以Excel可以轻松解析的方式分隔平面文件,请将其拉​​入Excel并对该列进行排序。查看最小值和最大值,您可能会发现有问题的记录。

答案 1 :(得分:1)

我的情况有点不同,但我觉得发布它可以帮助其他人。与OP不同,我将数据从Access 2000 mde文件导入sql server management studio,但与OP类似,我遇到了" Invalid data format"错误。我知道冲突是由于访问文件中DateTime类型的列与sql中的DataTime格式冲突而引起的。

解决方案:在我完成导入数据处理后,通过右键单击sql server management studio中的服务器名称来完成 - >任务 - >导入数据然后选择要导入的源(访问),目标(sql server)和表,我注意到由于类型问题而传输了0行。但是,在SQL Server Management Studio中为我创建了一个表,该表表示我尝试从访问表导入的表。它具有正确的列及其关联的数据类型。

所以我做的是右键单击表格以进入设计视图并将DataTime列的所有数据类型更改为Date

然后我重新导入导入数据进程,并成功传输了行。

答案 2 :(得分:0)

这是旧的,但我在我的SSIS数据流任务中遇到了类似的问题,希望这可能对某人有所帮助:对我来说,解决方案是检查“将源中的空值保留为数据流中的空值” “平面文件源编辑器”窗口中的选项(在“连接管理器”页面中)

答案 3 :(得分:0)

我发现在将数据库从本地EXPRESS复制到生产服务器时,表定义为smalldatetime而不是datetime。在向导中选择表的位置,可以选择“编辑映射”。在那里,您可以更改数据类型。

答案 4 :(得分:0)

在通过向导导入数据时,我将行的类型从datetime更改为date(在映射中),它对我有用。