我的任务是实现从平面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:是否有某种缓存/缓冲区可用于存储临时信息,例如服务器和版本的配对值?是否可以全局访问 - 在数据流之外?
第三季:然后呢?我需要插入在数据库中找不到的行。再次,我最好将SELECT查询的结果输出到EXECUTE SQL任务吗?如何通过结果循环并插入正确的信息来安装它。现在,我创建源和目标没有问题但是到目前为止脚本任务没有太多运气,更重要的是,运行我需要的SQL查询的最佳方法是什么,然后分析它们内部的信息并采取行动
我知道这很模糊,听起来比实际上复杂得多,但我似乎无法找到有关此类操作的信息。我看到的典型教程不包括这种操作,或者技术问题超出了我的需要。我的部门中没有人也有SSIS的真实经验,所以我真的可以使用一些技巧。我不是要求具体的代码,一些关于如何组织这一点的提示真的可以帮助我!
由于
PS:是的我知道在.net程序中它会是小菜一碟!
答案 0 :(得分:2)
将平面文件移植到临时表。然后,您可以使用execute SQl任务标记要导入的记录 然后你可以导入各种表格。
我从不在没有临时表的情况下进行导入(实际上我们使用两个,一个包含原始数据,另一个包含清理过的数据)这样可以更容易地返回并查看如果有数据,那么orignal数据是什么样的问题稍后。