【问题标题】:Design for importing definition data from Excel into SQL Server将定义数据从 Excel 导入 SQL Server 的设计
【发布时间】:2013-07-31 14:15:01
【问题描述】:

我们有使用 SQL Server 2008 R2 的餐厅库存控制系统。

添加所有定义数据需要很长时间:库存商品、产量、包装尺寸、食谱、类别等。因此,我们的客户询问是否可以从 Excel 上传。

在我开始之前,我想了解是否有最佳实践方法来执行此操作。

我知道所有工具:SSIS、存储过程等。但我正在寻找可以帮助设计过程的建议/资源。如何最好地设置电子表格、验证数据、创建子/父关系等。

这一定是一个相当普遍的项目——所以它必须有一个标准的设计/方法,这就是我正在寻找的。​​p>

【问题讨论】:

  • excel数据会手工生成吗?
  • 可能从另一个系统导出,然后格式化成我们的 Excel 模板
  • 如果它是从另一个系统导出的,则不接受它作为 Excel 文件(由于各种原因在 SSIS 中导入这些文件很糟糕)。而是要求一个文本文件(管道分隔)或 csv 文件。这些更容易转换,并且当字段包含数字外观和非平面数据(如零件号)时,不会出现 Excel 的问题。

标签: sql-server database-design import


【解决方案1】:

我认为设计将取决于您最熟悉的技术。如果您对 SSIS 和存储过程感到满意,这是我会使用的一般模式:

  1. Excel 模板 - 我不会花太多时间在这上面,添加表格所需的标题和表格。您可以锁定某些事情和/或实施规则,但您的大部分验证将在存储过程中完成。
  2. SSIS - 有一个将 Excel 数据加载到暂存表中的包,将有错误的行添加到错误日志中,以便与存储过程中的验证问题一起呈现给用户。
  3. 暂存表 - 每个工作表/生产表有一个暂存表,每个暂存表中有一个 ExecutionId 列以允许并行处理。允许所有列为 NULL,以便您可以在暂存表中获取数据或设置正确的 null 条件并让 SSIS 在出错时重定向这些行。暂存表中没有任何主键/外键关系,这些可以在存储过程中验证
  4. 存储过程 - 验证暂存数据,发现的任何问题都将添加到错误日志中,以呈现给执行导入的用户或人员。如果没有问题,将数据导入生产表。如果生产表中有现有数据,您可以进行比较和更新(如果适用)。

【讨论】:

  • 我们有两个临时表,一个用于原始数据,另一个包含清理数据。这可以节省大量时间来跟踪出现导入问题时发生的情况。我们还将所有错误的 rtrecords 扔到异常表中,以便对其进行检查、发送回数据提供者以进行修复或分析以查看是否需要新的清理例程。
猜你喜欢
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多