我环顾四周,似乎找不到任何可以回答这个特定问题的东西。
将数据从 MS SQL Server 2005 DB 移动到 Postgres 安装 (8.x) 的最简单方法是什么?
我研究了几个实用程序,例如“Full Convert Enterprise”等,它们都因某种原因而失败,从导致其崩溃的奇怪错误到插入空值而不是实际数据(什么?)。
我正在查看一个数据库,其中包含除单个视图之外的所有表,没有存储过程、函数等。
此时我正要编写一个小实用程序来为我做这件事,我只是不敢相信这是必要的。 肯定有某个地方可以做到这一点吗? 我什至不太担心成本,尽管免费更好:)
您只需使用内置的 SSIS 导入/导出功能即可。您可以按照以下步骤操作:
-> 导出数据
作为数据源。
作为目标驱动程序。
驱动程序={PostgreSQL ODBC 驱动程序(UNICODE)};服务器=;端口=;数据库=;UID=;PWD=
Microsoft Docs 提供了通过 ODBC 连接到 PostgreSQL 的详细说明。 PS:如果您想查看已安装的ODBC驱动程序,您需要通过
ODBC数据源管理器。在管理/开发工具下,我看到DBConvert for MS SQL & PostgreSQL。可能还列出了其他类似的工具。
我通常最终会编写一个小脚本,以 CSV 格式从 SQLServer 转储数据,然后在 PostgreSQL 端使用 COPY WITH CSV。
两者都只处理数据。处理模式有点困难,因为数据类型不一定直接映射。但它可以轻松地与模式的静态加载一起编写脚本。如果架构很简单(例如只是 varchar/int 数据类型),则该部分也可以轻松地根据 INFORMATION_SCHEMA 中的数据编写脚本。
当前版本的 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 数据源管理器
bit
值的问题(在 SqlServer 中为 1/0,但在 PostgreSql 中它是 true/false),所以我搜索并在
DBeaver上停止,它是免费的,并且几乎通过以下方式映射了表和列他自己,所以这很容易。对于相对较小的值(约 100 个表,约 2000 万行),它表现良好,不到 30 分钟。 但是,在具有大量列的大型表(约 1000 万行以上)上,它可能会遇到困难。除了通过 SSIS 以 CSV 格式导出并通过
COPY
如果您在 Linux 上运行 PostgreSql,您可以考虑使用FDW