2025.05.20(更新日: 2025.05.20)
SQL Serverのデータ型について
はじめに
オンプレサーバーで使用していたPostgreSQLからクラウド環境で使用しているSQL Serverに変更になる。
データ仕様書に書いていたPostgreSQLのデータ型が変更になるので、この記事で基本を抑えておきたい。
データ型の対応関係について、軽く触れておこう。
今日のリモートワークを快適に進めるための第一歩となる。
データ型の種類
以下のデータ型が考えられる。
- テキスト型(名前や住所などの文字列を扱う。可変長か固定長か、Unicode対応かがポイント。)
- 数値型(金額、ID、カウント数などに使用。精度と範囲の違いに注意。)
- 日付型(日付や時刻、タイムゾーンの有無などが異なるため、要チェック。)
PostgreSQLとSQL Serverの比較
たくさんあるので、代表的なものに絞って、PostgreSQLとSQL Serverの比較表を書いていこう。
PostgreSQL | SQL Server | 説明 |
varchar(n) 最大n文字の可変長文字列 | VARCHAR(n) 可変長文字列(最大8,000バイト) | 最大n文字の可変長文字列。通常の文字列に使用。 |
integer 32bit整数 | INT 32bit整数 | 32bit整数。IDやカウントに使用。 |
timestamptz 日付と時刻(タイムゾーンあり) | DATETIMEOFFSET タイムゾーン付きの日付 | タイムゾーン付きの日時。ログ記録などに便利。 |
移行時のポイント
SQL ServerとPostgreSQLでは、データ型の精度や扱える範囲が微妙に異なる。
たとえば、DATETIME型は小数点以下3桁までしか記録されないなどの違いがある。
そのため、次のような境界値テストを意識する必要があるかもしれない:
- 最大文字数を超える文字列は切り捨てられないか
- 浮動小数点の丸め誤差が発生していないか
- 1900年以前や9999年以降の日付が扱えるか
また、オンプレ環境でPython ETLを構築したときと同様に、「挿入 → 取得 → 差分確認」の工程を通して実データでの検証を行おう。
コメントを残す