SQL Serverのデータ型について

はじめに

オンプレサーバーで使用していたPostgreSQLからクラウド環境で使用しているSQL Serverに変更になる。

データ仕様書に書いていたPostgreSQLのデータ型が変更になるので、この記事で基本を抑えておきたい。

データ型の対応関係について、軽く触れておこう。

今日のリモートワークを快適に進めるための第一歩となる。

データ型の種類

以下のデータ型が考えられる。

  • テキスト型(名前や住所などの文字列を扱う。可変長か固定長か、Unicode対応かがポイント。)
  • 数値型(金額、ID、カウント数などに使用。精度と範囲の違いに注意。)
  • 日付型(日付や時刻、タイムゾーンの有無などが異なるため、要チェック。)

PostgreSQLとSQL Serverの比較

たくさんあるので、代表的なものに絞って、PostgreSQLとSQL Serverの比較表を書いていこう。

PostgreSQLSQL 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を構築したときと同様に、「挿入 → 取得 → 差分確認」の工程を通して実データでの検証を行おう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です