我需要做的是两个数据库之间的一些数据。源可以是任何东西(逗号分隔文件、xls 文件、任何数据库……),目标是 MS SQL Server。
我不需要同步所有数据,我只需要同步特定的表。
例子:
我需要将会计软件(在 PostgreSQL 上运行)客户表与 CRM(在 SQL Server 上运行)同步。
这个工具应该能够面对的一些问题:
1) 会计软件客户表有 1 个字段未映射到 crm 客户表中。(通过这种方式,我想将此额外字段映射到字段 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) 如果在源数据库中删除,请不要在目标数据库上删除,而只需将 varchar(10) 状态更改为已删除。
注意:我知道集成服务非常适合这个,但我必须支持 Express Edition,所以 SSIS 不是一个选项。
我创建了一堆脚本和预定的存储过程,目前它们可以满足我的需要,但它很难维护,而且完全没有 GUI 使得工作速度慢得多。记得前段时间看过TALEND,可能那个工具也是我需要的答案,反正我需要给管理提供一个快速的答案,所以我现在没有时间去研究市面上所有的工具,我宁愿有专家的建议。