我正在尝试使用SSIS将数据从单个文件(具有百万+记录)加载到SQL Server上的多个表中,同时保持文件中定义的关系.
为了更好地举例说明,我们假设我正在尝试加载一个包含员工姓名的文件,他们过去占用的办公室以及用标签分隔的职位名称历史.
文件:
EmployeeName<tab>OfficeHistory<tab>JobLevelHistory
John Smith<tab>501<tab>Engineer
John Smith<tab>601<tab>Senior Engineer
John Smith<tab>701<tab>Manager
Alex Button<tab>601<tab>Senior Assistant
Alex Button<tab>454<tab>Manager
Run Code Online (Sandbox Code Playgroud)
如果我的Office数据库架构具有以下表:
Employee (nId, name)
Office (nId, number)
JobTitle (nId, titleName)
Employee2Office (nEmpID, nOfficeId)
Employee2JobTitle (nEmpId, nJobTitleID)
Run Code Online (Sandbox Code Playgroud)
如何使用SSIS将文件加载到自动生成员工,Office和JobTitle的ID以及维护员工和办公室以及员工和职位标题之间的关系上的架构中?
所以在这种情况下.表格应如下所示:
Employee
1 John Smith
2 Alex Button
Office
1 501
2 601
3 701
4 454
JobTitle
1 Engineer
2 Senior Engineer
3 Manager
4 Senior Assistant
Employee2Office
1 1
1 2
1 3
2 2
2 4
Employee2JobTitle
1 1
1 2
1 3
2 4
2 3
Run Code Online (Sandbox Code Playgroud)
我是SSIS的新手,并且在执行数据流任务时没有使用自动生成ID和建立外键关系.任何指针将不胜感激.
谢谢!
小智 1
如果您确定要加载的数据的参照完整性良好,则可以在脚本任务中禁用外键约束,然后使用并行数据加载执行数据流,并在数据加载完成后再次启用约束。如果数据有问题,操作就会失败。不过,您必须设计回滚或清理策略。
另一个选项只是以串行方式加载数据,从主表开始并在子表上完成。我认为这是“更安全”的选项,因为它不会将您的数据完整性暴露给在 ETL 加载时可能使用这些表的其他用户。我更喜欢这个选项。
| 归档时间: |
|
| 查看次数: |
11664 次 |
| 最近记录: |