如何将postgresql的数据库和sqlserver的数据库做同步?


有两个之前独立的项目,A使用的是postgresql数据库,B使用的是sqlserver,现在需要B应用能够访问A的数据。目前计划的方式是直接将postgresql的数据同步到一个新的sqlserver数据库上,以便B应用能够访问。不知道有什么方法可以做这两个数据库间的同步?

数据库 PostgreSQL sqlserver 数据同步 postgresql转sqlserver

喵了个咪滴 10 years, 5 months ago

将postgresql和sqlserver同步,并不是一件很轻松的事情。因为两个DBMS对类型的定义并不一样,不兼容的地方不少。 你可以尝试一下以下方式:

  1. 导出postgresql数据

    pg_dump --data-only --column-inserts your_db_name > data_load_script.sql
    pg_dump --schema-only --no-owner --no-privileges your_db_name > schema_create_script.sql
    
  2. PostgreSQL有自动增加字段(带SEQUENCE的NOT NULL INTEGER字段),而SQL Server中,是IDENTITY字段,这二者并不相同。因此,如果你的schema文件中如果有很多'id' 字段,可能会有问题。

  3. 数据库的函数和存储过程在数据库间是不能做移动的,所以,如果postgresql中有的话,最好删掉。

  4. 确定使用的编码类型一致。在pg_dump命令中,有个--encoding=的选项,可以指定编码类型。注意:windows喜欢使用UTF-16类型,而PostgreSQl常用UTF-8。

  5. PostgreSQl的TEXT数据类型(不带最大值的VARCHAR),在SQL Server已经不再使用。因此,TEXT类型必须换掉。

  6. SQL Server还支持UNICODE数据,这点在做移植时也需要注意。

神无月的香霖 answered 10 years, 5 months ago

Your Answer