将数据从 MS SQL 迁移到 PostgreSQL?

问题描述 投票:0回答:7

我环顾四周,似乎找不到任何可以回答这个特定问题的东西。

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

我研究了几个实用程序,例如“Full Convert Enterprise”等,它们都因某种原因而失败,从导致其崩溃的奇怪错误到插入空值而不是实际数据(什么?)。

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

此时我正要编写一个小实用程序来为我做这件事,我只是不敢相信这是必要的。 肯定有某个地方可以做到这一点吗? 我什至不太担心成本,尽管免费更好:)

sql-server postgresql migration
7个回答
46
投票

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

    首先,您需要安装适用于 Windows 的
  1. PostgreSQL ODBC 驱动程序

    。根据CPU架构(x86/x64)安装正确的版本非常重要。

  2. 在 Management Studio 中,右键单击您的数据库:
  3. 任务

    -> 导出数据

  4. 选择
  5. SQL Server Native Client

    作为数据源。

  6. 选择
  7. .Net Framework Data Provider for ODBC

    作为目标驱动程序。

  8. 按以下形式将连接字符串设置为数据库:
  9. 驱动程序={PostgreSQL ODBC 驱动程序(UNICODE)};服务器=;端口=;数据库=;UID=;PWD=

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

Microsoft Docs 提供了通过 ODBC 连接到 PostgreSQL 的详细说明。 PS:如果您想查看已安装的ODBC驱动程序,您需要通过

ODBC数据源管理器

来查看。


8
投票
软件目录

。在管理/开发工具下,我看到DBConvert for MS SQL & PostgreSQL。可能还列出了其他类似的工具。


5
投票

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

两者都只处理数据。处理模式有点困难,因为数据类型不一定直接映射。但它可以轻松地与模式的静态加载一起编写脚本。如果架构很简单(例如只是 varchar/int 数据类型),则该部分也可以轻松地根据 INFORMATION_SCHEMA 中的数据编写脚本。


0
投票


0
投票

当前版本的 ODBC 连接字符串是:

适用于32位系统

Driver={PostgreSQL UNICODE};Server=192.168.1.xxx;Port=5432;Database=yourDBname;Uid=postgres;Pwd=admin;

适用于64位系统

Driver={PostgreSQL UNICODE(x64)};Server=192.168.1.xxx;Port=5432;Database=yourDBname;Uid=postgres;Pwd=admin;

您可以通过在 Windows 搜索中键入 ODBC 来检查驱动程序名称。
并打开 ODBC 数据源管理器


0
投票
bit

值的问题(在 SqlServer 中为 1/0,但在 PostgreSql 中它是 true/false),所以我搜索并在

DBeaver
上停止,它是免费的,并且几乎通过以下方式映射了表和列他自己,所以这很容易。对于相对较小的值(约 100 个表,约 2000 万行),它表现良好,不到 30 分钟。 但是,在具有大量列的大型表(约 1000 万行以上)上,它可能会遇到困难。除了通过 SSIS 以 CSV 格式导出并通过 COPY
命令导入到 PostgreSql 中的大表之外,我最终使用 DBeaver 处理所有内容。此外,删除大表上的 PK、约束、索引并在迁移后重新添加它们也有很大帮助。
如果您在 Linux 上运行 PostgreSql,您可以考虑使用 
FDW
,它可以轻松导入架构和数据。


0
投票
https://ourtechpal.com/how-to-migrate-data-from-postgresql-to-postgresql-databases/

© www.soinside.com 2019 - 2024. All rights reserved.