Skip to content

Kevin163/DatabaseSqlServer2PostgreSql

Repository files navigation

项目描述

随着国家信创政策的推进,越来越多的企业开始考虑将其现有的数据库系统从国外厂商的产品迁移到国产数据库系统,以提升数据安全性和自主可控能力。SQL Server 作为微软公司的一款经典数据库管理系统,虽然功能强大,但在信创场景下可能不满足合规要求,因此需要替代方案。

PostgreSQL 是一款开源且功能丰富的数据库管理系统,因其高性能、可扩展性和强大的社区支持,且许多国产数据库(如 OpenGauss、GaussDB(for PostgreSQL)、HighGoDB、Vastbase 等)基于 PostgreSQL 做了改造,通常可以作为迁移目标。

本项目旨在简化和自动化从 SQL Server(例如 2008 R2 等)迁移到 PostgreSQL 15(或兼容的国产数据库)的过程,包含表、视图、存储过程、函数、触发器等的结构转换与部署,帮助降低迁移复杂度与风险。

主要功能

  • 自动连接并扫描源 SQL Server 数据库
  • 将表结构转换为 PostgreSQL 格式并在目标数据库上创建表
  • 将视图转换为 PostgreSQL 格式并在目标数据库上创建视图
  • (计划中)迁移存储过程、函数、触发器
  • 生成迁移报告,包含已迁移对象及错误信息

迁移进度(待办事项)

  • 自动连接界面上指定的源 SQL Server 数据库(已完成)
  • 自动遍历源数据库中的所有表,并将表结构转换为 PostgreSQL 的格式,然后在 PostgreSQL 15 上创建相应的表。(已完成)
  • 自动遍历源数据库中的所有视图,并将视图转换为 PostgreSQL 的格式,然后在 PostgreSQL 15 上创建相应的视图。(已完成)
  • 自动遍历连接数据库中的所有存储过程,并将存储过程转换为 PostgreSQL 的格式,然后在 PostgreSQL 15 上创建相应的存储过程
  • 自动遍历连接数据库中的所有函数,并将函数转换为 PostgreSQL 的格式,然后在 PostgreSQL 15 上创建相应的函数
  • 自动遍历连接数据库中的所有触发器,并将触发器转换为 PostgreSQL 的格式,然后在 PostgreSQL 15 上创建相应的触发器
  • 迁移完成后,生成一个报告日志文件,包含迁移的表、存储过程、视图、函数和触发器的列表,以及任何错误信息

使用说明

先决条件:

  • .NET 9 SDK
  • 目标 PostgreSQL 15 或兼容数据库(若为国产数据库,请确认兼容层或适配项)

运行项目:

  1. 克隆或下载本仓库到本地。
  2. 在项目中配置源 SQL Server 的连接字符串和目标 PostgreSQL 的连接字符串(通常在配置文件或界面中填写)。
  3. 启动应用,使用界面输入连接信息并选择要迁移的对象。
  4. 点击“开始迁移”,等待迁移过程完成。
  5. 迁移结束后,查看生成的报告日志,核验迁移结果并在目标数据库中确认对象创建情况。

开发与测试

  • 本项目包含单元测试项目 DatabaseMigrationTest,可通过 dotnet test 运行测试。
  • 若需要在本地构建并调试 WPF 界面,请使用支持的 IDE(例如 Visual Studio)打开解决方案并运行。

注意事项

  • 迁移过程尽量在非生产环境或备份环境中先进行验证,避免对源数据库造成影响。
  • 存储过程、函数和触发器的自动转换可能需要人工介入和语法调整,尤其是 T-SQL 特有语法需要映射为 PL/pgSQL 或目标数据库的存储过程语言。
  • 目标数据库的 schema、权限、扩展(extensions)等项需要根据实际情况进行配置和校验。

贡献

欢迎贡献代码、问题与建议:

  • 提交 Issue 描述问题或功能请求
  • Fork 仓库,提交 Pull Request 以贡献代码

许可证

本项目遵循 MIT 许可证(如需变更,请参照仓库根目录的 LICENSE 文件)。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages