Accessで255文字以上のCSVデータをインポートするときは定義が必要

AccessにCSVファイルからデータをインポートする場合、1つのフィールドで255文字以上のデータが含まれていると、そこで切れてしまうと問題があります。これを回避するには、インポート定義を作成して、データ型で「メモ型」を指定してやる必要があります。

Access2002での話なので、最近のんはこんな事しなくてもいいかもしれません。

インポートの仕方

とりあえず、ファイルメニューや右クリックメニューでインポートを実行して、テキストインポートウィザードでインポート処理をします。

この時に、「設定」を開いて、テキストが長そうで255文字を超えそうなフィールドに対して「メモ型」を指定します。デフォルトでは、「テキスト型」が指定されています。

Accessインポート定義
Access CSVインポート定義「メモ型」指定

全部設定し終わったら、「保存」をクリックして、定義内容を保存しておきます。定義名は、2回目移行のインポート、マクロやVBAからのインポートに必要です。どっかに名前をコピーしときます。

Access インポート定義の保存
Access CSVインポート定義「定義の保存」

後は、どんどん進んで完了してインポートします。ちゃんと入ってなかったら、どっかでメモ型指定を忘れてるので、やり直してください。

マクロからの実行

CSVのインポートが一回で終わることはないと思うので、多分、自動化すると思います。マクロからやる場合は、アクションに「テキスト変換」、定義名に「ItemM インポート定義」などのさっき保存した定義名を指定します。

Access テキスト変換
Accessマクロ 「テキスト変換」 CSVインポート

VBAから実行

VBAからの場合は、DoCmd.TransferTextを使います。

DoCmd.TransferText acImportDelim, "ItemM インポート定義", "ItemM", "ItemM.csv", True, , 65001

2番めの引数にさっきの定義名を入れればOK。ちなみに、最後の「65001」はUTF-8で入力したい場合に指定します。

おまけ

実は、こんなことしなくてもやる方法も無くはないです。

フィールドが長くなりそうな奴は、CSVファイルの最初のレコードに、長いデータを入れとけば、Accessが勝手にメモ型にしてくれます。ダミーで入れといてあとで除去するばOK。どっちが手間かという問題ですが・・・

コメントを残す

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