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

从SQL Server迁移数据至PostgreSQL时出现语法错误求助

问题排查与解决

错误原因分析

报错提示Incorrect syntax near ':',核心问题出在SQL Server连接字符串的参数格式错误:
代码中database = "AdventureWorksDW2019;"变量末尾多了一个分号,导致拼接后的连接字符串出现连续两个分号:

'DRIVER={SQL Server Native Client 11.0};SERVER=DESKTOP-7CS8HNG\SQLEXPRESS;DATABASE=AdventureWorksDW2019;;UID=xxx;PWD=xxx'

SQL Server在解析连接上下文时,将连续分号识别为无效语法,触发报错。

此外代码中还有两个潜在问题:

  • 查询表名时重复包含DimProductSubcategory,会导致重复提取同一张表的数据
  • 加载PostgreSQL时使用了SQL Server的服务器地址,若PostgreSQL不在同一服务器/端口会导致加载失败

解决方法

  1. 修正database变量:去掉末尾的分号

    database = "AdventureWorksDW2019"
    
  2. 移除重复的表名:修改sys.tables查询中的in子句,删除重复的DimProductSubcategory

    src_cursor.execute(""" select t.name as table_name
    from sys.tables t where t.name in ('DimProduct','DimProductSubcategory',
    'DimProductCategory','DimSalesTerritory','FactInternetSales') """)
    
  3. 修正PostgreSQL连接地址:将load函数中的server替换为PostgreSQL实际的服务器地址(例如本地运行则改为localhost)

    engine = create_engine(f'postgresql://{uid}:{pwd}@localhost:5432/AdventureWorks')
    

内容的提问来源于stack exchange,提问作者jmyauy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:55:24