【问题标题】:Migrate data from SQL Server to PostgreSQL将数据从 SQL Server 迁移到 PostgreSQL
【发布时间】:2019-12-18 16:41:24
【问题描述】:

我在 SQL Server Enterprise 2014 中有一个存储过程函数和一个表。我在表中也有数据。现在我需要 PostgreSql(pgAdmin4) 中相同的表和数据。

任何人都可以向我建议将数据迁移到 POSTGRESQL 的想法或创建 SQL 脚本以便我可以使用 psql 运行脚本的任何想法吗?

【问题讨论】:

    标签: sql sql-server postgresql migration


    【解决方案1】:

    根据您拥有的数据量,您可以编写表格和数据的脚本。然后您可以根据 PostgreSQL 的需要调整脚本:

    1. 右键单击 SQL 数据库 > 任务 > 生成脚本
    2. 在“选择对象”屏幕上,选择您的特定表,然后选择“下一步>”
    3. 在“设置脚本选项”屏幕上,选择“高级”
    4. 找到名为“脚本的数据类型”的选项,然后选择“架构和数据”并选择“确定”
    5. 设置文件名并继续通过对话框直到生成文件
    6. 针对任何特定的 PostgreSQL 语法调整 sql 脚本

    如果数据量较大,您可能会考虑使用某种类型的数据传输工具,例如 SSIS。

    【讨论】:

      【解决方案2】:

      将表结构和数据导出为Josh Jay 描述的可能需要一些语法不匹配的修复,但如果不乏味的话应该是可行的。幸运的是,现有的conversion tools 可以提供帮助。

      您还可以尝试使用foreign data wrapper 将 SQL Server 中的表映射到正在运行的 PostgreSQL 实例。那么这只是复制表的问题。取决于您的需求以及每台数据库服务器相对于彼此的位置。

      不幸的是,存储过程将更加难以处理。虽然 Oracle 的 pl/sql 语言与 PostgreSQL 的 pl/pgsql 大体相似,但另一方面,MS SQL Server/Sybase 的 TransactSQL 方言不同,需要重写。如果 TransactSQL 函数也访问 .Net 对象,那么迁移任务最终可能会变得更加困难,因为您需要重新实现依赖项或找到逻辑等效项。

      【讨论】: