SSIS SQL Server 2008 错误

3 sql-server-2008 sql-server ssis

我只想知道如何使用 SSIS 将数据从源导入到 SQL Server 2008 数据库。

我有一个简单的txt文件(实际上它来自这个博客:http : //blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert- load-comma-delimited-file-into-sql-server/ )

1,James,Smith,19750101
2,Meggie,Smith,19790122
3,Robert,Smith,20071101
4,Alex,Smith,20040202
Run Code Online (Sandbox Code Playgroud)

我在 SQL Server 中创建了一个新表:

CREATE TABLE Test
(ID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
BirthDate SMALLDATETIME)
Run Code Online (Sandbox Code Playgroud)

我拖动了数据流任务,然后是平面文件源和 OLE DB 目标。

我创建了新的平面文件连接,选择文本文件,在高级选项卡中,有 4 列,因此我更改了它们的数据类型如下:

  • 第 0 列:两字节有符号整数 [DT_I2]
  • 第 1 列:String[DT-STR] - Outputcolumnwith :20
  • 第 2 列:String[DT-STR] - Outputcolumnwith :20
  • 第 3 列:精确的数据库时间戳 [DT_DBTIMESTAMP2]

然后,设置新的 OLB DE 连接,编辑它,在“表或视图的名称”下设置 [dbo].[Test] + 将每一列从输入映射到目标。

但是当我运行它时,出现了这些错误:

警告:SSIS 警告代码 DTS_W_MAXIMUMERRORCOUNTREACHED。Execution 方法成功,但引发的错误数 (4)
达到了允许的最大值 (1);导致失败。当错误数量达到 MaximumErrorCount 中指定的数量时,就会发生这种情况。更改 MaximumErrorCount 或修复错误。

错误:数据流任务中的 0xC02020A1,平面文件源 [52]:数据转换失败。列“第 3 列”的数据转换返回了状态值 2 和状态文本“由于潜在的数据丢失,无法转换该值。”。

错误:数据流任务中的 0xC0209029,平面文件源 [52]:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“输出列“第 3 列”(90)”失败,因为发生了错误代码 0xC0209084,“输出列“第 3 列”(90)”上的错误行配置指定了错误时失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

错误:数据流任务中的 0xC0202092,平面文件源 [52]:处理数据行 1 上的文件“D:\New folder\text.txt”时出错。

错误:0xC0047038 在数据流任务,SSIS.Pipeline:SSIS 错误代码 DTS_E_PRIMEOUTPUFAILED。组件“平面文件源”(52) 上的 PrimeOutput 方法返回错误代码 0xC0202092。当管道引擎调用 PrimeOutput() 时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

在我的情况下,无法成功导入的原因可能是什么?

我在 Windows 7 上使用评估版。

非常感谢!

FINALLY I COULD IMPORT FROM TXT FILE TO SQL 2008 DATABASE,

LET'S NAME THE 4 COLUMNS AND THEIR DATA TYPE AS :

id : two-byte signed integer [DT_I2]
firstname : String[DT-STR] - Outputcolumnwith :20
lastname: String[DT-STR] - Outputcolumnwith :20
yeardate: String[DT-STR] - Outputcolumnwith :20

THEN IN DERIVED COLUMN EDITOR :

Derived column name : yeardate
Derived column : replace 'yeardate'
Expression : (DT_DBTIMESTAMP)(SUBSTRING(yeardate,1,4) + "-" + SUBSTRING(yeardate,5,2) +     "-" + SUBSTRING(yeardate,7,2))
Run Code Online (Sandbox Code Playgroud)

bil*_*nkc 6

您遇到了一个众所周知的问题。当 SSIS 尝试导入数据时,它提供了区域设置感知转换,并且格式 YYYYMMDD 不能很好地转换。您可以使用您在解决方案中概述的“作为字符串导入并转换为实际日期时间”的方法,但与使用告诉 SSIS 退出如此该死的智能的本机方法相比,这种方法速度较慢且消耗更多资源。

右键单击您的平面文件源并选择“显示高级编辑器”。在输入和输出属性中,展开输出列,找到您的列 (BirthDate) 并将FastParse属性从 False更改为True

快速解析设置

仅进行该更改,包将成功执行

成功

此外,SO 对同一问题的出色回答