0

我们的网站作为软件即服务为许多客户运行。

他们要求能够将他们的数据导入我们的数据库。由于数据库有很多客户,每个客户对哪些字段映射到什么以及需要转换什么都有不同的需求。

我们可以编写自己的映射工具并进行 BULK Insert,这没关系。

我从未使用过 SSIS,但读到这就是它所做的事情。如果是这样,我们如何让他们访问 SSIS?是不是像报表生成器一样,您可以在其中下载“用户界面”并且客户可以做到(只是......他们不是通过 Excel 的计算机知识),还是我们必须对包进行编程(在这种情况下也可以是我们自己)?

他们的数据可能是 CSV 或 Excel。

4

1 回答 1

6

SSIS 不是客户工具。它很复杂,需要对 ETL 流程有深入的了解。典型客户用户能够使用它创建导入的可能性为 0%。

我们有数百个使用 SSIS 的导入,以及近 10 名员工来创建和监控它们。都是非常资深的专业人士。如果你做对了,这不是简单的事情。

我们的开发模式是我们创建一个标准包来完成客户最需要的工作。如果他们想使用标准,我们就要求他们向我们发送标准格式的文件,以便我们可以连接导入。我们使用父包和子包执行此操作,以便可以更改每个客户的配置。如果使用标准流程,我们不允许人们发送 Excel 文件。至少获取 CSV,因为 Excel 和 SSIS 不能很好地协同工作。管道分隔的文本文件是最好的。这是成本最低的选项,因为与创建自定义包相比,将新的父包与标准文件挂钩所需的时间要少得多。

其他客户需要自定义导入。我们也这样做,但为他们收取更多的钱,因为他们将花费两倍以上的时间。我们现在为一个新客户做的定制进口和出口估计有超过 2000 小时(这是针对多个进口和出口)。在一次导入上花费超过 100 小时的开发时间并不罕见。这不是一项快速或廉价的任务。如果他们给你一个 Excel 文件,估计成本是 CSV 或文本文件成本的两倍。Excel 真的很难导入。一旦他们明白这样做更昂贵,大多数地方都不会提供 Excel 文件。

不要只为生产表创建批量插入。这是存在数据完整性问题的方法。(来自 Excel 和 csv 的数据非常糟糕,比一般来自数据库的数据差得多。)需要对来自文件的数据进行分级和评估以发现数据问题,并在可能的情况下进行清理。我们的包将错误数据发送到异常表,因此客户端可以知道需要修复什么(我们将异常通过电子邮件发送给客户端)。我们还对电话号码等内容进行了一些相当标准的清理,以确保它们的格式正确。某些类型的错误会导致整个导入失败。您需要确定什么是好的文件以及什么错误是问题的要求。这些可能因数据类型而异。

客户需要了解他们在发送文件时可以做什么和不能做什么。第一条规则是任何文件结构更改都是编程更改,并且客户将被收取费用以进行更改,并且更改必须提前获得批准并像任何其他编程任务一样给予时间。文件结构没有最后一分钟的文件更改。这些将导致导入自动失败。一旦他们意识到此类更改成本高昂并且将导致他们的数据无法立即可用,大多数客户将尝试将此类更改保持在最低限度。

始终对执行导入工作以及跟踪导入错误并确定原因所需的支持时间收费。一般来说,一旦导入稳定并在生产上,问题很少是代码中的错误,它几乎总是文件中的坏数据问题。然而,客户需要确切地知道哪些数据是坏的以及为什么。顺便说一句,在设置过程中,切勿在导入后将原始文件丢弃,alawys 将其保存在存档中。您最终将需要研究一些可能在几个月或几年前导入的不正确数据,并且您将需要这些文件来证明您的过程没有错,他们的数据是。

导入是与任何其他项目一样的代码。它们应该在源代码控制中,并且它们应该具有与其他代码相同级别的 QA 测试。应该对它们进行代码审查。

当您拥有一个包含大量数据导入的系统时,您需要了解数据对于产品的成败至关重要。客户离开是因为糟糕的数据问题,而不是因为用户界面笨拙或难以使用。如果数据是您业务的命脉,您应该有专家来处理数据。应该在数据上花费更多的金钱和开发时间,而不是在每个广泛处理数据的应用程序中,特别是如果它以任何方式处理隐私问题、法律或法规问题和/或金钱时。数据决定了应用程序的成败。

于 2013-05-10T14:19:55.337 回答