如何将本地PostgreSQL数据导入Azure Database for PostgreSQL灵活服务器(无法使用pgAdmin)
解决Azure PostgreSQL Flexible Server(私有访问)的数据导入问题
方案1:通过Azure虚拟机(VNet内)中转操作
- 在与PostgreSQL服务器同一虚拟网络下创建Azure虚拟机。
- 登录虚拟机,安装PostgreSQL客户端工具(
psql、pg_dump/pg_restore)。 - 本地生成数据库备份并上传至虚拟机:
# 本地生成SQL格式备份 pg_dump -h 本地数据库地址 -U 本地用户名 -d 数据库名 > local_db_backup.sql # 通过scp上传到Azure虚拟机(替换为你的虚拟机信息) scp local_db_backup.sql azure_user@虚拟机公网IP:/home/azure_user/ - 在虚拟机内执行数据导入:
# SQL文件导入 psql -h AzurePostgreSQL私有地址 -U Azure用户名 -d 目标数据库名 < /home/azure_user/local_db_backup.sql # 自定义格式备份用pg_restore pg_restore -h AzurePostgreSQL私有地址 -U Azure用户名 -d 目标数据库名 --clean local_db_backup.dump
方案2:使用Azure Data Factory迁移
- 登录Azure门户,创建Azure Data Factory实例,确保实例与PostgreSQL服务器在同一VNet或通过VNet peering连接。
- 配置两个数据源:
- 源:本地PostgreSQL数据库(通过自托管集成运行时连接本地环境)
- 目标:Azure PostgreSQL Flexible Server(利用VNet集成直接连接)
- 创建全量复制管道并运行,完成数据迁移。
方案3:利用Django自带命令迁移ORM数据
- 本地导出Django数据(仅包含ORM管理的数据):
python manage.py dumpdata --exclude auth.permission --exclude contenttypes > db_dump.json - 将
db_dump.json上传到Azure的Django应用服务器(可通过FTP、Azure CLI或部署中心完成)。 - 在Azure应用服务器终端执行导入:
python manage.py loaddata db_dump.json
方案4:临时开放公共访问(仅限允许场景)
注:完成后需立即恢复私有访问配置,避免安全风险
- 登录Azure门户,进入PostgreSQL服务器的连接安全性设置,临时开启
允许公共访问,并添加本地IP到防火墙规则。 - 本地直接执行导入:
pg_restore -h AzurePostgreSQL公网地址 -U 用户名 -d 数据库名 local_db_backup.dump - 导入完成后,立即关闭公共访问,恢复原有私有配置。
内容的提问来源于stack exchange,提问作者12341413451354134
相关产品推荐
相关产品推荐

