2012-04-16 10 views
0

私たちはSQL Serverのユーザーであり、最近はPostgreSQL上に1つのデータベースがあります。一貫性を保つため、SQL Server 2000のレプリケーションデータベースをSQL Server 2000上の他のデータベースにコピーして、PostgreSQLのデータベースにレプリケートする必要があります。私たちは、ODBCとLinked Serverを使用してこれを実行できました。 PostgreSQLのデータベース用にODBC DSNを作成し、そのDSNを使用してSQL Server上でリンクサーバーを作成しました。私たちは、SQL Serverデータベースからリンクサーバーに、したがってPostgreSQLデータベースにテーブルを正常に複製できました。データ型ビット、数値(12,2)、および小数点(12,2)はそれぞれ、文字(1)、文字(40)および文字(40)に変換されます。これらのデータ型をPostgreSQLデータベースに保持する方法はありますか?私はそのビットがブール値になるべきであり、numericとdecimalのデータ型はpostgresqlの複製されたテーブルのままでなければならないことを意味します。私たちは、 SQL Server 2000からPostgreSQLへのデータベース複製

CREATE TABLE tmtbl 
(
    id integer, 
    "Code" character varying(15), 
    booleancol character(1), 
    numericcol character(40), 
    decimalcol character(40), 
) 

はどうもありがとうございました、それはなるとPostgreSQLのために複製された後

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の9.xのに

SQL Serverのテーブルを使用しています。

+1

[DBA](http://dba.stackexchange.com/)でよく質問してください。 – Filburt

+1

ようこそStackOverflow:コード、XML、またはデータサンプルを投稿する場合は、テキストエディタでこれらの行をハイライト表示し、エディタツールバーの "コードサンプル"ボタン( '{}')をクリックしてください。それを強調する構文! –

+0

"*データ型は*に変換されます:どのツールがこの変換を行いますか?この(明らかに間違った)自動変換が行われないように、テーブルを事前に作成することはできますか? –

答えて

1

、使用してください:

  1. booleanタイプの列のtrue/falseタイプのために(postgresのにはbitタイプありません)。
  2. NUMERIC型もPostgreSQL(SQL標準に準拠)にあります。しかし、より速く動作するように、real PostgreSQLの方が良いはずです。

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

既存のデータタイプについては、公式ドキュメントのthis partにいつでも問い合わせることができます。

+1

正確な値が必要な場合は 'real'は良い選択ではありません。 '数値'ははるかに良い選択です。 –

関連する問題