簡単な答えは、非常に互換性があり、簡単に一致するということです。 次の表は、最も一般的なOracleタイプについて、OracleデータタイプとPostgreSQLとの比較とマッピングを示しています。 これらの基本的なデータ型は、PostgreSQLの機能を表面的に示しているだけです。非常に豊富な型システムを持ち、カスタム型をサポートしています。 組み込み型には、JSON、配列、UUID、IPアドレス、幾何学的型、列挙などが含まれます 。
Oracleデータ型 | PostgreSQLデータ型 | コメント |
---|---|---|
シャア() | シャア() | |
シャア(1) | シャア(1) | ブールフラグとして使用する場合は、ブールデータ型を使用することをお勧めします |
Varchar2() | バルチャー() | |
タイムスタンプ | タイムスタンプ | 一般に、タイムスタンプをタイムゾーン(timestamptz)を持つタイムスタンプとして保存することをお勧めします。これは、ローカルタイムゾーンを持つOracleタイムスタンプと同等です。 このようにして、データベースサーバーまたはクライアントが異なるタイムゾーンにある場合でも、すべての値がUTCで格納されるため、多くの問題が回避されます。 ただし、一部のアプリケーションコードでは、タイムゾーン情報を持つタイプを使用する必要があります。これが重要なポイントである場合は、タイムゾーンなしのタイムスタンプを使用して移行の変更を最小限に抑えます。 |
日付 | タイムスタンプ | PostgreSQLタイプ「日付」は日付のみを保存し、時間は保存しません |
日付 | 日付 | |
番号() | 数値() | PostgreSQL Numericは、可変範囲と精度を備えたOracle Numberに似ているため、任意の数値フィールドに使用できますが、整数フィールドと浮動小数点数が望ましい場合があります。 |
数値(5.0) | 整数 | 整数およびBigintは、大きなテーブルの結合に使用される場合、Number()よりも適切に機能するため、結合に一般的に使用される主キーおよび外部キーフィールドには、Intとのマッチングが優先されます。 |
数(10.0) | ビギント | |
番号(、2) | 数値(、2) | PostgreSQL Numeric(、2)は、特定の精度を持っているため(通貨を処理していて、タイプ(、0)が必要でない限り)、通貨タイプに最適です。 moneyタイプは精度において数値タイプと同等ですが、暗黙的なフォーマットの仮定のために、アプリケーションに驚きが生じる場合があります。 算術中に丸められる可能性があるため、浮動小数点表現(float / double)を使用しないでください。 |
CLOB | テキスト | テキストははるかに使いやすく、LOB関数がなくても、文字フィールドとして扱うだけです。 最大1 GBのテキストを保存できます。 |
長い | テキスト | |
ブロブ | バイテア | |
ロング生 | ||
生 | ||
XMLTYPE | XML | |
ウルイド | オイド | PostgresでOIDを使用することは同等ではなく、Oracleで使用されるROWIDと同じパフォーマンス上の利点はありません。 |