我在PostgreSQL 8.3.1中有一个数据库,我想迁移到MS SQL Server 2005(或者2008),包括表模式和数据。 数据库大小约为50GB,大约有4亿行,所以我认为简单的INSERT语句是不可能的。 任何人都可以推荐执行此迁移的最佳工具吗? 显然它需要可靠,所以目标数据库中的数据与源数据完全一样,并且需要能够在合理的时间内复制这些数据量。
如果您在SQL 2005框中安装了适当的Postgres支持驱动程序(或希望通过ODBC使用Postgres,或希望将Postgres中的数据转储到文件并从中导入),则可以使用SQL Server中的导入/导出向导为了复制数据。 这将询问您各种问题,然后使用适当的批插入操作作为SQL Server Integration Services(SSIS)包作业执行导入。
但是,如果该向导不是一个选项,则值得考虑的是,虽然行数很多,但行的个别大小平均小于135个字节,并且提供足够的事务日志空间以允许发生50 GB的事务“简单的插入“语句本身不是不可能的。
我结束了没有使用任何第三方工具的数据,因为我没有尝试过的大表工作。 即使SSIS失败。 不过,我确实使用了商业工具。 所以我的转换过程如下:
转换步骤处理了pg_dump和bcp使用的格式的一些差异,例如:
我还发现在MSSQL中违反了Postgres中的一些独特的约束条件,所以我不得不放弃它们。 这是因为MSSQL中的NULL = NULL(即,NULL被视为唯一值),但不在Postgres中。
你去:)不幸的是,这是一个有点贵。