Accessのデータ型は、移行先でどう変わる?17種を書き出して変換表にした
Accessのデータ型は、見本の17種のうち7種がそのままCSVに入り、10種は変換が要ります。内訳は、値が変わる・消えるのが6種、値は残るが形を直すのが4種です。主宰が全型を1つずつ入れた見本テーブル(3行・51セル)を書き出して数えると、19セルが変わりました。通貨の小数、Yes/Noの-1、日付の書き方などの直し方を、値の例と件数つきの表にしました。(2026年10月時点)
全体の流れと費用はAccess・オフコンの引越しのページにまとめています。
要点
- Accessの見本17型のうち、そのままCSVに入るのは7種で、10種は変換が要ります。
- 見本テーブル(3行・51セル)を書き出して突き合わせると、変わったセルは19でした。
- 通貨は1234.5678が「¥1235」になり、0.0001は0になります。単精度の3.14159274は3.14に丸まりました。
- OLEオブジェクトの40バイトは空になり、添付ファイルは名前だけが出ます。
- 日付は「2026/10/17 9:30:00」、Yes/Noは-1が1になり、ルックアップは名前でなく番号が出ます。
目次
Accessのデータ型は、移行先でどう変わりますか?
見本の17種のうち7種はそのまま入り、10種は変換が要りました。10種のうち、値が変わる・消えるのは6種、値は残るが形を直すのは4種です。
見本は、主宰が作った架空のテーブルです。短いテキストから集計まで、各型の列を1つずつ作り、3行入れました。Accessで書き出しの指定を付けずにCSVへ出し、DAOで読んだ元の値と1セルずつ比べました。
17型×3行で51セルのうち、変わったのは19セルです。日本語のWindowsで、Accessは16.0の版を使いました。
| 分け方 | 型 | 値の例(Accessの値 → CSVの値) | 変わったセル |
|---|---|---|---|
| そのまま入る | オートナンバー、短い・長いテキスト、バイト・整数・長整数、十進 | 12345678.1234 → 12345678.1234 | 0/21 |
| 値が変わる・消える | 通貨 | 1234.5678 → ¥1235 | 3/3 |
| 単精度 | 3.14159274 → 3.14 | 2/3 | |
| 倍精度 | 0.333333333333333 → 0.33 | 1/3 | |
| 集計 | 空 → 6 | 2/3 | |
| OLEオブジェクト | 40バイト → 空 | 1/3 | |
| 添付ファイル | 本体 → memo.txt(名前だけ) | 1/3 | |
| 値は残るが形を直す | 日付/時刻 | 2026-10-17 09:30:00 → 2026/10/17 9:30:00 | 3/3 |
| Yes/No | -1 → 1 | 1/3 | |
| ハイパーリンク | 表示#URL#の1つの文字列 | 3/3 | |
| ルックアップ | 東京本店 → 1 | 2/3 |
どの型が、そのまま入りますか?
値を変えずに入ったのは7種です。長いテキストは、改行と引用符を含む1件でも、CSVの引用の規則どおりに読めば元に戻りました。ただし、その1件は物理的に34行に分かれるので、1行1件と決めて読むツールは壊れます。
十進型の99999999999999.9999も、桁を落とさず出ました。文字そのものの化けは別の話で、文字コードの記事に書いています。
オフコンのパック10進との違いも、ここで押さえます。パック10進はファイルの中のバイトの並びで、読み直しが要ります。Accessの十進型はデータベースが持つ型で、CSVには普通の数字の文字列で出るので、同じ読み直しは要りません。
オートナンバーも、1・2・3の値は変わりませんでした。
どの型で、値が変わったり消えたりしますか?
通貨・単精度・倍精度・集計・OLE・添付の6種です。
通貨は、Accessの中では小数4桁まで持ちます。書き出すと円記号つきで整数に丸まり、0.0001は0、922337203685477.5807は922337203685478でした。この円記号のバイトは0x5Cなので、UTF-8に直すと「\」になります。
単精度と倍精度は、元から桁が限られます。Microsoftの資料では、有効数字は単精度が7桁、倍精度が15桁です。それでも書き出しでは小数2桁に丸まり、1/3は「0.33」になりました。
0.1のように短い値は無事で、桁の多い値だけが変わります。移行先では、PostgreSQLのrealが6桁、double precisionが15桁で、正確に持つにはnumericを選びます。
集計は、[c05_Long]*2の結果が長整数型の範囲を超えた2行で、Access側は空なのにCSVに「6」が出ました。式のある列は、書き出す前に結果が空の行を数えておきます。OLEは40バイトを入れた行が空、添付は名前しか出ません。この2つは、本体のファイルを別に取り出して、移行先へ置き直します。
どの型は、値が残るが形を直しますか?
日付/時刻・Yes/No・ハイパーリンク・ルックアップの4種です。
日付は「2026/10/17 9:30:00」と、斜線で時が1桁の形で出ます。SQLiteのdatetime関数にそのまま渡すとNULLが返り、「2026-10-17 09:30:00」なら通りました。時刻だけを入れた行は、日付が1899/12/30になります。
Yes/Noは、Accessの中では-1です。CSVには1が出ました。PostgreSQLのbooleanが受け付けるのは1・0・true・yesなどで、-1は一覧にありません。他の数字が混じっていないかを数えてから、変換の規則を決めます。
ハイパーリンクは、表示する文字とURLを「#」でつないだ1つの文字列です。ルックアップは、画面では名前でも、中身は番号です。名前を引く元のテーブルを先に移します。
移す前に、何を数えればよいですか?
テーブルごとに、列の型を17種のどれかに分けて数えます。次の3つの順で進めます。
- 列の型を数え、上の表の「直す型」に当たる列を拾う
- 通貨・単精度・倍精度・日付・Yes/Noの列は、元と移した後の合計と件数を見比べる
- OLEと添付は、本体のファイルを別に取り出し、移行先に置き直す
見本の作り方は scripts/figs/access_types_make.ps1 にあります。数えた結果は、そのまま変換表の下書きになります。移行全体の進め方はAccess引越しの流れにまとめています。
このサイトで相談するには?
どの型が入っているか分からなくても、お見せいただかなくて構いません。何をどう頼むか決まっていなくても大丈夫です。
Access引越しが今の仕組みをうかがい、御社のやり方に合わせて、進め方を一緒に考えます。準備は要りません。無料で相談するからお声がけください。
よくある質問
- Accessのデータ型は、移行先でそのまま使えますか?
- 半分弱です。見本17種では、短いテキスト・長いテキスト・整数系・十進型・オートナンバーの7種が値を変えずに入りました。
- 通貨型は、どの型へ移すのがよいですか?
- 小数4桁まで持つので、移行先も正確に持てる十進の型(numeric など)を選びます。単精度や倍精度にすると誤差が出ます。
- 添付ファイルやOLEオブジェクトは、CSVで移せますか?
- 移せません。見本ではOLEが空、添付は名前だけでした。ファイルの本体は別に取り出して、移行先に置き直します。
- ルックアップの名前は、CSVに出ますか?
- 見本では番号だけが出ました。名前は元のテーブルから引き直すので、移行先でも元のテーブルを先に移します。
この数字の出し方
この記事の自前の数字は、次の見本・条件・回数で出しました。主宰が確かめ、更新日は2026年10月17日です。スクリプトの名前から、同じ手順を自分のファイルで再現できます。
- Access引越しの計測(2026年10月17日、Microsoft 365 の64bit版 Access。全型を入れた見本テーブル17型・3行・51セルをCSVに書き出して突き合わせた)。scripts/figs/access_types_make.ps1・access_types_analyze.py
出典
- Microsoft サポート「Introduction to data types and field properties」(Single は有効数字7桁、Double は15桁、Decimal の範囲、添付・集計・ルックアップ・ハイパーリンクの説明)(2026年10月17日確認)
- PostgreSQL 文書 8.1「Numeric Types」(real は10進6桁、double precision は15桁、numeric は正確)(2026年10月17日確認)
- PostgreSQL 文書 8.6「Boolean Type」(true の入力は true・yes・on・1)(2026年10月17日確認)
- SQLite「Datatypes In SQLite」(論理型と日付型の専用の型は無い、日付は ISO 8601 の文字列などで持つ)(2026年10月17日確認)