2012-02-24 104 views
1

目前我正在处理从.csv文件到数据库的相当棘手的转换。我必须开发一个package/solution/xxxyyy来处理从这个.csv文件到我的SQL Server数据库的数据流(每天更新新的数据.csv)。从.csv到db的数据传输。哪一个是最好的方法?

我的老板“建议”我应该使用的方法是通过SSIS(通常我会写一些“解析器”来轻松地将数据从.csv中转移出去)。事实是,我有相当多的转变要做。

员工有这个字段:

name;surname;id;roles 

字段 “角色” 的格式是这样的:

role1,role2,role3 

在我的分贝这种关系是在3页不同的表映射:

tblEmployee 
    PK_Emp | name | surname 

tblRoles 
    PK_Role | roleName 

tblEmployeeRole 
    PK_Emp | PK_Role 

所以,从.csv我必须提取单个员工的角色,插入tblRoles(检查没有重复)。然后我必须在tblEmployeeRole中管理关系。

考虑到这仅仅是我必须管理的一种不同转换的例子,我想知道SSIS是否是实现我的目标(加载脚本组件)的最佳工具。当我解释我的困惑给我的老板,他想出了这个“主意”:

使用SSIS来传输数据,因为它们是在一个临时表,然后通过存储过程处理不同的转换。

从我对存储过程的了解很少,我不确定我应该遵循这个想法。 现在,考虑到我的实际上司不是那个开明的项目经理(他通常会用奇怪的想法搞砸我们的工作),并且考虑到我不是SSIS和存储过程中的专家,我决定写在这里,看看是否有人能解释我,如果以前的方法之一是正确的,或者如果我不得不考虑一些其他(更好)的解决方案。

对不起,我的英文不好,TY任何帮助=)

+0

id是我们可以用来唯一标识一行的东西吗? – billinkc 2012-02-24 21:28:52

回答

2

我会从CSV文件中插入数据原样。 然后在数据库端做任何解析。如果这是必须经常完成的事情,那么我会采取任何脚本来做到这一点,并从中创建程序/功能。这个问题有点大方案,所以这只是一个通用的解决方案。如果您需要帮助将角色解析到查找表中,那么这将更具体,更好用。 通常,当我需要被解析成SQL结构庞大的平面文件数据集的工作:

  • 导入为-是
  • 查找查找代码间的共同点数据
  • 创建基础查找表(在你的情况下,将tblRoles)
  • 创建一个脚本插入到两个tblEmployee和tblEmployee作用
  • 一旦我的测试场景,然后工作,我担心每个组件的步骤组合成一个整体SSIS或存储程序。

我在这里建议类似的东西。将此导入任务分解为小块,并在以后担心宏伟设计。 SSIS,特效,编译代码......这些都可能适合你。你只需要知道你需要做什么。

1

根据您的转换,它们都可以在SSIS中完成。如果您不需要存储原始.csv数据,那么我将远离存储过程和临时表,因为您绕开了SSIS大部分优势。作为一个例子,你可以对传入数据进行查找以确定正确的关系,并将这些结果插入多个表(在本例中为3)。

相关问题