You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定MS SQL数据库与登录创建语句转换为PostgreSQL语句

MS SQL 转 PostgreSQL 语句转换

1. 创建数据库(如果不存在)

原MS SQL语句:

if not exists(select * from sys.databases where name = '{0}') create DATABASE [{0}]

对应的PostgreSQL语句(PostgreSQL 11+支持简化语法):

CREATE DATABASE IF NOT EXISTS "{0}";

如果需要兼容PostgreSQL 10及更早版本,可用PL/pgSQL的DO块实现:

DO $$
BEGIN
  IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = '{0}') THEN
    CREATE DATABASE "{0}";
  END IF;
END $$;

2. 创建Windows登录(如果不存在)

原MS SQL语句:

if not Exists (SELECT name FROM sys.server_principals WHERE name = '{0}') 
BEGIN 
  CREATE LOGIN [{0}] FROM WINDOWS 
END

PostgreSQL中,Windows域/本地用户需创建对应登录角色,转换语句如下:

DO $$
BEGIN
  IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = '{0}') THEN
    CREATE ROLE "{0}" LOGIN;
  END IF;
END $$;

注意:

  • 若用户名包含反斜杠、空格等特殊字符,必须用双引号包裹,否则PostgreSQL会自动转为小写并引发错误
  • 需确保PostgreSQL服务已配置支持Windows身份验证,通常在pg_hba.conf中设置sspi认证规则

内容的提问来源于stack exchange,提问作者113_Ashish shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:05:20