将数据从MS SQL迁移到PostgreSQL?

时间:2009-09-02 21:49:31

标签: sql-server postgresql migration

我环顾四周,似乎无法找到任何可以回答这个具体问题的内容。

将数据从MS SQL Server 2005数据库移动到Postgres安装(8.x)的最简单方法是什么?

我已经研究了几个实用程序,如“完全转换企业”等,它们都因为某种原因而失败,其中包括奇怪的错误,这些错误使得它更容易插入空值而不是实际数据(wth?)。

我正在查看包含所有表的数据库,除了单个视图,没有存储过程,函数等。

此时我正要写一个小工具来为我做,我简直不敢相信这是必要的。肯定有某事某处可以做到这一点?我甚至不太担心成本,虽然免费是可取的:)

4 个答案:

答案 0 :(得分:11)

我不知道为什么没有人提到使用健壮的MS SQL Server Management Studio的最简单和最简单的方法。

只需使用内置的SSIS导入/导出功能即可。您可以按照以下步骤操作:

  1. 首先,您需要为Windows安装PostgreSQL ODBC Driver。根据CPU拱(x86 / x64)安装正确版本非常重要。

  2. 在Management Studio中,右键单击您的数据库: Tasks - > 导出数据

  3. 选择 SQL Server Native Client 作为数据源。

  4. 选择 .Net Framework Data Provider for ODBC 作为目标驱动程序。

  5. 使用以下格式将连接字符串设置为数据库:

    Driver = {PostgreSQL ODBC Driver(UNICODE)}; Server =; Port =; Database =; UID =; PWD =

  6. 在下一页中,您只需选择要导出的表。 SQL Server将生成默认映射,您可以自由编辑它。可能你会遇到一些需要一些时间来解决的类型不匹配问题。例如,如果SQL Server中有布尔列,则应将其导出为int4。

  7. Microsoft Docs 提供了通过ODBC连接PostgreSQL的详细说明。

    PS:如果您想查看已安装的ODBC驱动程序,则需要通过ODBC Data Source Administrator进行检查。

答案 1 :(得分:7)

看看Software Catalogue。在Administration/development tools下,我看到DBConvert for MS SQL & PostgreSQL。可能还列出了其他类似的工具。

答案 2 :(得分:4)

您可以使用MS DTS功能(我认为在最新版本中重命名为SSIS)。 DTS的一个问题是,在将数据加载到pg中时,我无法在每行之后执行提交。如果你只有几十行左右,这很好,但它真的很慢。

我通常最终编写一个小脚本,以CSV格式从SQLServer转储数据,然后在PostgreSQL端使用COPY WITH CSV。

这两个人只关心数据。由于数据类型不一定直接映射,因此处理模式有点困难。但它可以很容易地与模式的静态加载一起编写脚本。如果模式很简单(例如,只是varchar / int数据类型),那么该部分也可以很容易地从INFORMATION_SCHEMA中的数据编写脚本。

答案 3 :(得分:-1)

对于MS SQL Server 2005(显然)和PostgreSQL都有.NET绑定。因此,只需要几行代码就可以编写一个可以安全地将数据从一个传输到另一个的程序。该视图可能必须手动完成,因为Postgres不使用与SQL Server相同的语言语言。