从SQL Server 2000到PostgreSQL的数据库复制

从SQL Server 2000到PostgreSQL的数据库复制,postgresql,sql-server-2000,replication,Postgresql,Sql Server 2000,Replication,我们是SQL Server用户,最近我们在PostgreSQL上有一个数据库。为了保持一致性,我们正在将SQL Server 2000上的数据库复制到SQL Server 2000上的其他数据库,现在我们还需要将其复制到PostgreSQL上的数据库。我们可以使用ODBC和链接服务器来实现这一点。我们在PostgreSQL上为数据库创建了一个ODBC DSN,并使用该DSN在SQL Server上创建了一个链接服务器。我们能够将表从SQLServer数据库复制到链接服务器,从而成功地复制到Pos

我们是SQL Server用户,最近我们在PostgreSQL上有一个数据库。为了保持一致性,我们正在将SQL Server 2000上的数据库复制到SQL Server 2000上的其他数据库,现在我们还需要将其复制到PostgreSQL上的数据库。我们可以使用ODBC和链接服务器来实现这一点。我们在PostgreSQL上为数据库创建了一个ODBC DSN,并使用该DSN在SQL Server上创建了一个链接服务器。我们能够将表从SQLServer数据库复制到链接服务器,从而成功地复制到PostgreSQL数据库。现在面临的问题是复制时,数据类型位、数字(12,2)和十进制(12,2)分别转换为字符(1)、字符(40)和字符(40)。关于如何在PostgreSQL数据库中保留这些数据类型,有什么解决方案吗?我的意思是位应该变成布尔值,数字和十进制数据类型应该保持在postgresql的复制表中。我们正在使用PostgreSQL 9.x

SQL Server表

CREATE TABLE tmtbl 
(
    id int IDENTITY (1, 1) NOT NULL PRIMARY KEY,
    Code varchar(15),
    booleancol bit,
    numericcol numeric(10, 2),
    decimalcol decimal(10, 2)
) 
在复制到PostgreSQL之后,它变成

CREATE TABLE tmtbl
(
  id integer,
  "Code" character varying(15),
  booleancol character(1),
  numericcol character(40),
  decimalcol character(40),
)
非常感谢。

请使用:

  • boolean
    类型为
    true
    /
    false
    列类型(postgres中没有
    类型)
  • 类型也存在于PostgreSQL中(根据SQL标准)。但是我建议您最好使用
    real
    PostgreSQL类型,因为它会工作得更快
  • 我建议您在PostgreSQL端手动创建目标表,并指定适当的字段类型,因为ODBC+链接服务器组合无法正常工作


    您可以随时查阅现有数据类型的官方文档。

    您听说过国外的数据包装器吗?

    最好在询问。欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
    {}
    ),以很好地格式化和语法突出显示它!“数据类型转换为”:此转换使用哪种工具?您是否可以预先创建表manuall,以便不会发生这种(显然错误的)自动转换?
    real
    如果您想要精确的值,则不是一个好的选择<代码>数字是一个更好的选择。