Sql server SSIS中的公共表、不同文件和不同文件结构
我有多个平面文件作为源文件。每个文件都有一些公共列。但其中一个也有一些额外的列。我需要将所有的数据从平面文件移动到一个只有公共列的表中,并跳过其中一个文件中的额外列。结构示例如下: 文件1的结构:Sql server SSIS中的公共表、不同文件和不同文件结构,sql-server,ssis,Sql Server,Ssis,我有多个平面文件作为源文件。每个文件都有一些公共列。但其中一个也有一些额外的列。我需要将所有的数据从平面文件移动到一个只有公共列的表中,并跳过其中一个文件中的额外列。结构示例如下: 文件1的结构: id, name, age 文件2的结构: id, name, age, address, country 文件3的结构: id, name, age, address 表的结构: id, name, age 我只想为文件之间的三个公共列填充表。我需要忽略休息。如何使用SSIS实现这一点?简单
id, name, age
文件2的结构:
id, name, age, address, country
文件3的结构:
id, name, age, address
表的结构:
id, name, age
我只想为文件之间的三个公共列填充表。我需要忽略休息。如何使用SSIS实现这一点?简单。设置3个数据流任务,每个任务连接到不同的文件。每一个都写入同一个表(例如,通过OLEDB目标)。对于除File1(与表结构匹配)之外的所有列,只需不映射OLEDB目的地中多余的、不需要的列(即地址、国家)。这些列中的值将被丢弃,而不会进入表中。您需要一个for-each循环来遍历平面文件所在的文件夹 只要您想要的列在每个文件中都处于相同的位置,那么所有这些都应该是好的
请看一看。您需要在不同的文件夹中分离不同类型的文件(您可以在SSI中使用文件系统任务通过匹配文件名等进行分离,或者在powershell中进行分离)。每个文件夹中的文件必须具有相同的列数和名称/类型。然后为每个文件夹创建for each循环,并遍历以从所需列中获取数据,并将它们加载到目标表中。您可能需要最后一步(执行sql)来删除目标表中的重复项。有多少个平面文件?这可能会有所不同。没有固定数量的文件。有时可能只有一个,有时可能是6个、7个或10个。。。。它可以是已知或未知文件中的“n”个文件公共列数?它们是已知的。。。但是拼写可能不同。。。虽然这些职位仍然是萨米人,但我面临着类似的挑战。唯一的区别是我的目标表包含所有这些列(就像所有列的超集)。我的要求是填充每个文件可用的任何内容,并在目标中保留其他列为空。有人做过到公共目标表的动态映射吗?以上三个文件只是为了说明。每次我尝试的时候,文件的数量可能会有所不同。。。它不起作用了。。。。在具有额外字段的文件中,由于行分隔符定义为CRLF,因此它将这些字段的数据作为一个字段。您认为“这些字段的数据”是什么意思,即它将前9个字段考虑到表中相应的9个字段中。。。但是从有额外列的文件中,它会将数据从第10、11和12字段带入第10列。有几个选项-但可能最简单的一个是在完成导入和修剪最后一列后有一个派生列?它是固定长度的吗?是否有一个分隔符可以使用?如果它将多个列连接到第10列中,那当然没关系。您只导入前9列,因此之后的所有内容都会被丢弃。