我有三列CSV文件.
sno sname quantity
--- ----- --------
1 aaa 23
2 bbb null
3 ccc 34
4 ddd ddd
5 eee xxx
6 fff 87
Run Code Online (Sandbox Code Playgroud)
SQL Server数据库中的表如下/
CREATE TABLE csvtable
( sno int
, sname varchar(100)
, quantity numeric(5,2)
)
Run Code Online (Sandbox Code Playgroud)
我创建了一个SSIS包来将csv文件数据导入数据库表.我在包执行期间收到错误,因为数量是一个字符串.我创建了另一个表来存储无效数据.
CREATE TABLE wrongcsvtable
( sno nvarchar(10)
, sname nvarchar(100)
, quantity nvarchar(100)
)
Run Code Online (Sandbox Code Playgroud)
在csvtable中,我想存储以下数据.
sno sanme quantity
--- ------ --------
1 aaa 23
3 ccc 34
6 fff 87
Run Code Online (Sandbox Code Playgroud)
在wrongcsvtable中,我想存储以下数据.
sno sanme quantity
--- ------ --------
2 bbb null
4 ddd ddd
5 eee xxx
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向来实现上述输出吗?
小智 18
这是一个可能的选择.你可以使用内部的Data Conversion转换来实现这一点Data Flow Task.以下示例显示了如何实现这一目标.该示例使用SSIS 2005和SQL Server 2008数据库.
分步过程:
创建一个名为的文件FlatFile.CSV,并使用数据填充它,如屏幕截图#1所示.
在SQL数据库中,创建两个名为SQL的表,dbo.CSVCorrect并dbo.CSVWrong使用SQL Scripts部分下提供的脚本.表中的字段dbo.CSVWrong应具有数据类型VARCHAR或NVARCHAR或CHAR,以便它可以接受无效记录.
在SSIS包上,创建名为SQLServer的OLE DB连接以连接到SQL Server数据库并创建名为CSV的平面文件连接.参见截图#2.配置平面文件连接CSV,如屏幕截图#3 - #7所示.平面文件连接中的所有列都应配置为字符串数据类型,以便在读取文件时包不会失败.
在包的"控制流"选项卡上,放置Data Flow Task如屏幕截图#8所示.
在程序包的"数据流"选项卡上,放置Flat File Source并配置它,如屏幕截图#9和#10所示.
在程序包的"数据流"选项卡上,进行Data Conversion转换并对其进行配置,如屏幕截图#11所示.单击Configure Error Output并将" 错误"和" 截断"列值从" 失败"组件更改为" 重定向"行.参见截屏#12.
在程序包的"数据流"选项卡上,放置一个OLE DB Destination并将数据转换中的绿色箭头连接到此OLE DB目标.配置OLE DB目标,如屏幕截图#13和#14所示.
在程序包的"数据流"选项卡上,放置另一个OLE DB Destination并将数据转换中的红色箭头连接到此OLE DB目标.配置OLE DB目标,如屏幕截图#15和#16所示.
屏幕截图#17显示完成配置后的数据流任务.
屏幕截图#18显示了包执行之前表中的数据.
屏幕截图#19显示了数据流任务中的包执行.
屏幕截图#20显示了包执行后表中的数据.
希望有所帮助.
SQL脚本:
CREATE TABLE [dbo].[CSVCorrect](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SNo] [int] NULL,
[SName] [varchar](50) NULL,
[QuantityNumeric] [numeric](18, 0) NULL,
CONSTRAINT [PK_CSVCorrect] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CSVWrong](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SNo] [varchar](50) NULL,
[Quantity] [varchar](50) NULL,
[SName] [varchar](50) NULL,
[ErrorCode] [int] NULL,
[ErrorColumn] [int] NULL,
CONSTRAINT [PK_CSVWrong] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
截图#1:

截图#2:

截图#3:

截图#4:

截图#5:

截图#6:

截图#7:

截图#8:

截图#9:

截图#10:

截图#11:

截图#12:

截图#13:

截图#14:

截图#15:

截图#16:

截图#17:

截图#18:

截图#19:

截图#20:

| 归档时间: |
|
| 查看次数: |
35339 次 |
| 最近记录: |