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

问题描述 投票:1回答:4

下午好,

我有一个我无法弄清楚的困境。我试图在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

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

sql sql-server import
4个回答
1
投票

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


1
投票

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

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

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

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.