当SQL SELECT查询不灵活/足够强大时使用什么

时间:2017-12-12 08:59:07

标签: sql sql-server database tsql scripting

我有一个我需要提取的查询,感觉它超出了标准SQL的设计范围。它可能在技术上是可行的,但我觉得最终的查询很难计划,编写,理解和维护。

我基本上有4个数据表需要进入1个表格,而且1个表格无法处理所有原始数据中可能存在的数据.I&#39 ; ll需要根据多种因素选择要使用的数据,包括字段值,字段是否为空,以及数据是否重复。我还需要拆分包含分号分隔数据的特定字段。

由于这一切,我认为某种脚本语言可能是最好的。我想知道哪种工具最适合这类工作。

我从Microsoft SQL Server数据库中提取并听说过,但没有真正使用过T-SQL。也许T-SQL包含足够的额外功能,可以轻松地在其中编写这样的查询?

我很高兴把时间花在学习必要的工具和语言上,我只是不知道我真正需要什么样的工具,那就是我&#的所在39;我正在寻求建议。

我已经详细说明了下面的具体情况,如果这有助于提供答案。

  

我需要从高中学生信息中导出信息   系统(SIS)用于导入联合课程管理系统。相关表格和   SIS的列是:

┌──────────┬────────────────┬─────────────────┬───────────────┐
│  student │    parent      │    address      │  student_addr │
├──────────┼────────────────┼─────────────────┼───────────────┤
│ PK id    │ PK id          │ PK parent_id    │ PK student_id │
│    name  │    mother_name │ PK addr_num     │ PK parent_id  │
│    email │    father_name │    phone        │ PK addr_num   │
│          │                │    email        │ PK addr_type  │
│          │                │                 │               │
└──────────┴────────────────┴─────────────────┴───────────────┘
     

所以每位学生都有一张student条记录。 parent条记录   可能占一两个实际的人(母亲和父亲,或   只是一个单亲)取决于家庭结构。 parent   记录然后有多个address记录,通常3-4,有时   每个都包含相同的数据,有时可能会有所不同。

     

然后将这些address es(以及parent s)链接到   学生通过student_addr表格,addr_type   定义该地址应该用于该学生的目的   (例如,大众通信,个人通信,自动   通知)。

     

address.email字段有时包含多个分号   分开的电子邮件。由于student s可以链接到的事实   多个parent个多个address个,一个学生可以   链接到许多address.email字段,当然这些字段本身   可能包含多个地址。

     

我需要选择最多两个父母姓名,电话和电子邮件   联合课程系统:

┌───────────────┐
│ student_id    │
│ student_name  │
│ student_email │
│ parent1_name  │
│ parent1_phone │
│ parent1_email │
│ parent2_name  │
│ parent2_phone │
│ parent2_email │
└───────────────┘
     

我将确定从哪个phoneemail中抽取   学生基于许多因素,例如:

     
      
  • 如果电子邮件重复
  •   
  • addr_type
  •   
  • 如果某个特定字段为空白
  •   

1 个答案:

答案 0 :(得分:0)

您可以使用Python或PowerShell等高效的脚本语言。但是如果你不熟悉它们,它可能比SSIS花费更长的时间。它包含了一些在您的情况下看起来很方便的功能,并允许您可视化您的数据需要遵循的工作流程。

顺便说一下:还有很多其他可用的ETL工具,我更喜欢SSIS,但根据您的源系统,您可能更喜欢其他工具。因此,在开始下载和安装之前,请务必使用Google。