2

我需要做的是两个数据库之间的一些数据。源可以是任何东西(逗号分隔文件、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,可能那个工具也是我需要的答案,反正我需要给管理提供一个快速的答案,所以我现在没有时间去研究市面上所有的工具,我宁愿有专家的建议。

4

2 回答 2

1

我相信 SQL Server Integration Services 可以做到这一切,并且我相信 SQL Server Management Studio 允许您创建和打包您的 SSIS 作业,以便可以将它们部署到其他地方。

于 2011-05-16T19:16:19.157 回答
1

Finally I went for TALEND, I never really used SSIS, I just saw a live demo of it at a SQL Server conference. Anyway Talend is a free alternative (and quite rich) to SSIS, so it will suite the needs of all customers, including the ones (95%) that has SQL Server Express.

于 2011-05-17T07:08:41.093 回答