0

私たちはSQLServerユーザーであり、最近PostgreSQLに1つのデータベースがあります。一貫性を保つために、SQLServer2000上のデータベースをSQLServer2000上の他のデータベースに複製し、PostgreSQL上のデータベースにも複製する必要があります。これは、ODBCとリンクサーバーを使用して行うことができました。PostgreSQLでデータベース用のODBCDSNを作成し、そのDSNを使用してSQLServerでリンクサーバーを作成しました。SQL Serverデータベースからそのリンクサーバーに、したがってPostgreSQLデータベースにテーブルを正常に複製することができました。現在直面している問題は、レプリケーション中に、データ型ビット、numeric(12,2)、decimal(12,2)がそれぞれcharacter(1)、character(40)、character(40)に変換されることです。これらのデータ型をPostgreSQLデータベースに保持する方法に関する解決策はありますか?つまり、ビットはブール値になるはずです、数値と10進数のデータ型は、postgresqlのレプリケートされたテーブルにそのまま残しておく必要があります。PostgreSQL9.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),
)

どうもありがとうございます。

4

2 に答える 2

1

使ってください:

  1. booleantype for true/falseカラムのbitタイプ (postgres にはタイプがありません);
  2. NUMERICtype は PostgreSQL にも存在します (SQL 標準による)。ただしreal、より高速に動作するため、PostgreSQL タイプを使用することをお勧めします。

ODBC + Linked Server の組み合わせでは適切に機能しないため、適切なフィールド タイプを指定して、PostgreSQL 側でターゲット テーブルを手動で作成することをお勧めします。

既存のデータ型については、公式ドキュメントのこの部分をいつでも参照できます。

于 2012-04-16T08:04:12.037 に答える
0

外部データ ラッパーについて聞いたことがありますか? http://wiki.postgresql.org/wiki/Foreign_data_wrappers

于 2012-04-16T14:58:13.157 に答える