SSIS 2008 R2 - 如何从CSV加载标题和数据行

时间:2011-10-28 02:17:10

标签: sql-server sql-server-2008 ssis

我有一个CSV文件,其中同一文件中有标题行和数据行。

我希望在同一负载期间从两行获取信息。

最简单的方法是什么?

即文件示例 - Import.CSV

2,11-JUL-2011
先生,鲍勃·史密斯,1月 - 1984年
女士,简,DOE,23-APR-1981

在第一行中,有一个行数和传输日期。

在第二行和后续行中是实际数据,在此标题中,FirstName,LastName,Birthdate

3 个答案:

答案 0 :(得分:0)

SQL Server Integration Services条件性拆分转换应该这样做。

答案 1 :(得分:0)

我想知道你会对管道中的那些信息做些什么。但是,只有一个解决方案可以一次读取它(最后看一下注释/限制):

创建数据流

条件拆分的一个路径将是文件的第一行(mycounter = 0),另一个路径将是其余行(示例中为2)。

注意#1:文件源只能为源中的每列设置一个元数据。这意味着如果您的第一列数据是字符串(Mr,Ms,...),那么您必须在源中将其设置为字符串数据类型。否则,如果将其设置为整数(DT_Ix)它 一旦遇到文件第一列中的字符串数据(Mr,Ms,...),就会失败。这适用于所有列,而不仅仅是第一列。

注意#2:SSIS只会看到你告诉它的列数。这意味着您必须在每个行中具有相同数量的列。否则,你有破旧的csv文件,你需要采取另一种方法 - 搜索互联网。但这些解决方案还需要不同的csv布局。

答案 2 :(得分:0)

以下链接中的答案说明了当父文件行和子行存在于彼此相邻的同一文件中时,如何将父子数据从平面文件加载到SQL Server数据库中。

How do I split flat file data and load into parent-child tables in database?

How to load a flat file with header and detail data into a database using SSIS package?