我想制作一个SSIS包,将excel文件中的数据加载到数据库表中。
我已经创建了一个完成任务的包,但是每次加载excel数据时都需要重新创建表,因为excel数据及其列定义每个月都会更改。如果每次执行都没有创建表,则会出现错误,我的任务将无法完成,因为excel数据将在错误的列定义下加载。
有没有办法每次都动态删除和创建表格?
答案 0 :(得分:0)
SSIS在幕后生成大量元数据,用于描述源和目标字段和映射。如果感觉它没有与同一数据源/目的地通信,则通常会抛出验证错误并拒绝启动。
在某种程度上,您可以通过在连接管理器属性上将DelayValidation设置为True来缓解此问题。但是,由于您的数据规范确实在发生变化,因此这对您的情况不太有帮助。
绕过严格控制数据格式的另一个选择是在脚本任务中编写自己的自定义源/转换/目标逻辑。您可以编写脚本任务来读取传入的Excel文件的格式,并将这些详细信息保存到变量中,并将它们传递给执行SQL任务以创建表。然后,您可以编写脚本任务,以将数据动态映射到包中存在的某些通用中间列。最后,您可以编写脚本任务目标,以将该数据加载到新创建的表中。
基本上你是绕过所有开箱即用的SSIS功能并从头开始编写自己的集成解决方案,但似乎你没有太多选择。