我需要做的是两个数据库之间的一些数据。源可以是任何内容(逗号分隔文件,xls文件,任何数据库,...),目标是MS SQL Server。
我不需要同步所有数据,我只需要同步特定的表。
示例:
我需要同步会计软件(在PostgreSQL上运行)CUSTOMERS表与CRM(在SQL Server上运行)。
此工具应该能够面对的一些问题:
1)会计软件客户表有1个字段未映射到crm customers表中。 (这样我想将这个额外的字段映射到字段CUSTOMERS_CUSTOM_DATA.EXTRA_FIELD)
2)有一些规则(比如只同步代码在10000到99999之间的客户)
3)允许执行一些后期插入任务(例如我使用手动管理的seuqences作为tanble ID,因此在插入10条记录之后我需要将10添加到序列中)
4)有一个异常处理机制,所以如果出现问题,它可以调用一个sql server存储过程(我已经拥有它并将向我发送一封电子邮件),或者只是发送一条消息来通知某事是在夜间同步中出错了。
5)轻松安排何时执行数据同步(每小时,每天,包括手册)
6)执行数据转换:如果源表中的姓氏字段是varchar(20),而目标表中的姓氏是varchar(15),我想明确说“执行截断”。
7)插入或更新有不同的规则。例如,在源电子邮件字段中不存在,但我想在目标中填充它我决定仅在插入时执行此操作,而不是在更新时。 (例如,当我插入一个新客户时,我想填充连接名称和姓氏的电子邮件字段,但后来我想让用户修改它,这第一次插入只是为了简化数据输入,但后来这个特殊情况将手动处理。所以我想说(在插入填充电子邮件字段,更新时不对电子邮件字段做任何事情)
8)如果在源db中删除,请不要在目标上删除,只将varchar(10)STATUS更改为DELETED。
注意:我知道Integration Services将是完美的,但我必须支持Express Edition,因此SSIS不是一个选项。
我创建了一堆脚本和预定的存储过程,目前正在做我需要的东西,但它很难维护,而且完全缺乏GUI会使工作变得更慢。我记得在TALEND时间前见过,也许这个工具也是我需要的答案,无论如何我需要快速回答管理,所以我现在没时间调查市场上的所有工具了,我我希望得到专家的建议。
答案 0 :(得分:1)
我相信SQL Server Integration Services可以做到这一切,我相信SQL Server Management Studio允许您创建和打包SSIS作业,以便将它们部署到其他地方。
答案 1 :(得分:1)
最后我去了TALEND,我从未真正使用过SSIS,我刚刚在SQL Server会议上看到了它的现场演示。无论如何,Talend是SSIS的免费替代品(并且相当丰富),因此它将满足所有客户的需求,包括具有SQL Server Express的客户(95%)。