1

我的任务是实现将数据从平面 csv 文件 (A) 加载到 SQL Server 数据库 (B)。现在,虽然我是 SSIS 的初学者,但我发现进行传输相当简单。问题是,来自 CSV (A) 的数据必须加载到 (B) 内的四个不同的表中,并且我需要在插入之前检查现有数据。

例如,(A) CSV 中有一个名为 SERVER_VERSION 的列,包含在结构中:[SERVER].[VERSION]

我需要做的: 1. 从 (A) 列中检索服务器和版本作为单独的信息(简单修剪) 2. 在 (B) 版本表上运行选择查询以搜索此信息 3. 如果有没有结果,我将(A)中的信息插入到(B)服务器表中,该表有一个服务器列和一个版本列

FLATFILE_SOURCE -> EXTRACT_SERVER_VERSION -> CHECK_VERSION -> INSERT_VERSION ->SQL_DESTINATION

当然,我想对 CSV 中的每一行都这样做。

现在,我最初的想法是使用数据流进行此验证,平面文件源通过脚本组件传递,该脚本组件将从平面文件中提取服务器和版本。但我觉得这是一种相当面向对象的方法,似乎不适合在 SSIS 中使用。

Q1:我从脚本中获得的数据需要在 (B) 的 SELECT 查询中使用。我实现这一点的最佳途径是什么?我可以将脚本的结果输出到数据流之外的 EXECUTE SQL QUERY,还是直接在脚本内尝试 sql 查询会更好?我很确定这不是正确的查看方式,因为这是数据分析,而不是转换。

Q2:是否有某种缓存/缓冲区可以用来存储临时信息,例如服务器和版本的配对值?它可以在数据流之外全局访问吗?

Q3:然后呢?我需要插入在数据库中找不到的行。同样,我是否最好将 SELECT 查询的结果输出到 EXECUTE SQL 任务?我怎样才能在结果中循环并插入正确的信息。

现在,我可以毫无问题地创建源和目标,但到目前为止脚本任务的运气并不好,更重要的是,运行我需要的 SQL 查询的最佳方法是什么,然后分析其中的信息并采取行动。

我知道这很模糊,听起来比实际复杂得多,但我似乎无法找到有关这种操作的信息。我看到的不是典型的教程,它不包括这种操作,或者技术问题超出了我需要做的范围。我所在部门的人也没有真正的 SSIS 经验,所以我真的可以使用一些技巧。我不是在要求特定的代码,一些关于如何组织它的提示真的会帮助我!

谢谢

PS:是的,我知道这对.net 程序来说是小菜一碟!

4

1 回答 1

3

将平面文件导入临时表。然后您可以使用执行 SQl 任务来标记您要导入的记录然后您可以对各个表进行导入。

我从来没有在没有临时表的情况下进行导入(实际上我们使用了两个,一个用于原始数据,一个用于清理后的数据)如果以后出现数据问题,可以更轻松地返回查看原始数据是什么样的。

于 2012-08-08T14:18:57.283 回答