PostgreSQL + SQL Server = WiltonDB
WiltonDB 是一个基于 PostgreSQL 的开源数据库,通过 Babelfish 插件支持 Microsoft SQL Server 协议以及 T-SQL 语句。
Babelfish 是亚马逊提供的一个开源项目,使得 PostgreSQL 数据库同时具有 Microsoft SQL Server 数据查询和处理的能力。Babelfish 可以方便地将 Microsoft SQL Server 应用程序迁移到 PostgreSQL,需要改动的代码很少甚至不需要改动。
WiltonDB 和 Babelfish 使用 Apache 2.0 或者 PostgreSQL 开源协议。
安装 WiltonDB
WiltonDB 支持 Windows 以及 Linux 操作系统。
Windows 平台安装 WiltonDB
WiltonDB 提供了 Windows 操作系统安装包,点击 GitHub 链接下载安装文件。运行安装文件打开以下安装界面:
然后按照界面提示,一步步完成安装。
点击“Finish”完成安装,同时打开配置工具:
通过配置工具可以查看和修改数据库配置。
Linux 平台安装 WiltonDB
对于 Linux 操作系统,可以通过 RPM 包或者 DEB 包进行安装,也可以使用 Docker 容器运行 WiltonDB。
以 Rocky Linux 8 为例,安装命令如下:
$ cat /etc/redhat-release
Rocky Linux release 8.8 (Green Obsidian)
$ sudo dnf install 'dnf-command(copr)'
$ sudo dnf copr enable wiltondb/wiltondb
$ sudo dnf update
$ sudo dnf install wiltondb
然后通过 wiltondb-setup 脚本初始化数据库集群。
$ sudo wiltondb-setup
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
* Initializing WiltonDB
WARNING: DB superuser 'wilton' was created with password 'wilton', please change the password before allowing remote connections.
* Initialized, use 'systemctl start postgresql' to start the server
初始超级用户 wilton 的默认密码是 wilton,建议使用前进行修改。
最后启动 postgresql 服务。
$ sudo systemctl start postgresql
$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2023-11-07 11:53:52 UTC; 2s ago
连接 WiltonDB
WiltonDB 默认不支持远程连接,这一点和 PostgreSQL 一致。如果想要通过远程客户端进行连接,可以使用 WiltonDB 配置工具(/install_dir/bin/wdb_config.exe)进行配置。
选择“Networking Only”配置组,点击“listen_addresses”进行修改:
完成配置之后,重启 WiltonDB 服务。
使用 SSMS 连接数据库
Microsoft SQL Server Management Studio(SSMS)可以用于连接 WiltonDB,默认端口为 1433。
连接数据库时,输入以下连接信息:
其中,主机地址和端口之间使用逗号(,)进行分隔。
连接成功后可以执行 SQL 语句:
使用 pgAdmin 连接数据库
pgAdmin 可以通过 PostgreSQL 协议连接 WiltonDB,默认端口为 5432。
连接成功之后,pgAdmin 可以查看和操作 SSMS 创建的对象。
使用命令行连接数据库
连接 Microsoft SQL Server 或者 PostgreSQL 的命令行客户端,例如 sqlcmd 以及 psql,都可以用于连接 WiltonDB。
sqlcmd 连接数据库的示例如下:
$ ./sqlcmd -S 127.0.0.1,1433 -U wilton -P wilton
1> select @@version
2> go
version
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Babelfish for PostgreSQL with SQL Server Compatibility - 12.0.2000.8
Oct 22 2023 17:48:32
Copyright (c) Amazon Web Services
PostgreSQL 15.4 (EL 1:15.4.wiltondb3.3_2-2.el8) on x86_64-redhat-linux-gnu (Babelfish 3.3.0)
(1 row affected)