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

如何从Synapse向内部署PostgreSQL数据库写入数据?求可行方案

可行的Synapse向内部署PostgreSQL写入数据的替代方案

方案1:Synapse专用SQL池外部表+存储过程

  • 先创建指向内部PostgreSQL的Linked Service,前提是打通Synapse与内部数据库的网络(比如VPN、ExpressRoute或VNet peering)
  • 在Synapse专用SQL池中创建外部表,映射到PostgreSQL目标表的结构
  • 通过INSERT INTO语句或存储过程,将Synapse内的数据写入外部表,间接同步到内部PostgreSQL

方案2:Azure Data Factory(ADF)中间层

  • 配置自托管集成运行时,部署到能访问内部PostgreSQL的网络环境中
  • 在ADF中构建管道,从Synapse(专用SQL池、Lakehouse等)读取数据,通过自托管运行时写入内部PostgreSQL
  • 可将ADF管道与Synapse任务联动,实现端到端ETL流程

方案3:修复PySpark连接问题(原方案优化)

  • 排查网络连通性:确认Synapse工作区VNet与内部PostgreSQL所在网络已打通
  • 调整PostgreSQL配置:修改postgresql.conf的listen_addresses为*,在pg_hba.conf中添加允许Synapse工作区IP段访问的规则
  • 改用JDBC连接替代psycopg2,兼容性更强:
    df.write \
      .format("jdbc") \
      .option("url", "jdbc:postgresql://xx.x.xx.xx:5432/your_database") \
      .option("dbtable", "target_table") \
      .option("user", "your_username") \
      .option("password", "your_password") \
      .mode("append") \
      .save()
    
  • 若网络仍受限,可部署内部跳转节点,或用Azure Private Link将PostgreSQL暴露到Synapse可访问的VNet中

方案4:Synapse Spark自定义连接器+存储中转

  • 上传兼容的PostgreSQL连接器JAR包到Synapse工作区,通过Spark JDBC方式连接写入
  • 也可先将Synapse数据导出到Azure Blob Storage,再通过内部脚本或工具将存储中的数据导入PostgreSQL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:36:04