★★★: よくある

Dr.Sumへデータをインポートする際に発生しがちなエラーと対応方法をご紹介します。「データフォーマットエラーです」「日付型のデータ変換に失敗しました」というエラーとCSVデータ内に引用符が含まれるがエスケープされない場合の対処法について紹介します。

なお、Dr.Sumへのデータのインポートについては下記の記事で紹介しています。

参照:【手動で取り込み】データベースにCSVデータをインポートしよう~CSV手動編~
参照:【自動で取り込み】データベースにCSVデータをインポートしよう~CSV自動編~
参照:【Excelの取り込み】データベースにExcelデータをインポートしよう~Excel編~
参照:SQL Server のデータをODBCでデータインポートしよう

ケース1: データフォーマットエラーです。

インポート対象のデータ型(文字/数値など)とDr.Sumで指定しているデータ型(文字/数値など)が一致していない場合に発生するエラーです。

あたり前のことなのですが、数値側で設定した項目に文字型のデータをインポートする等設定したデータ型と実際にインポートするデータ型が異なるとエラーとなります。項目数が多くデータの内容まで覚えていなかったり、項目名だけではデータ型の判断がむずかしかったりする場合ありますよね?

またインポートウィザードを使った場合、型を自動判別するので便利なのですが、データの全てを読み取って判断するわけではない(デフォルトで先頭から50行、最大で1000行で判断する指定が可能)のでまれに型が合わないこともあります。そんな時はインポート元のデータの定義書、設計書等をよく確認し適切なデータ型を再度設定してください。

ケース2: 日付型のデータ変換に失敗しました。

日付や時刻のデータがある場合、その項目が原因でエラーとなる場合があります。

これはデータベースやCSVで、年が4桁だったり、2桁だったり日付/時刻のフォーマットが異なることが原因です。インポートする際に適切なフォーマットを指定することで解決できます。例えばインポートウィザードでは下図のようなフォーマットを指定するダイアログがあり、フォーマットを指定することができます。

ケース3: CSVのデータ中に引用符が含まれるがエスケープされていない

CSVやTSVといったテキスト形式のデータには、ルールがありデータ項目を
引用符(ダブルクォーテーション「"」等)で囲うことが多くあります。

例:"123456789","あいうえお","2020/05/27"

ここではダブルクォーテーション「"」を例にしますが、もしデータ中に「"」が含まれていた場合は、ダブルクォーテーションを一つ付加し「""」のように記載することで、引用符ではなく、データであることを表す決まりになっています。
これをエスケープ処理と言います。

エスケープ前: 商品名は"ウイングレモン"です。
エスケープ後: 商品名は""ウイングレモン""です。

データ中に引用符が含まれ、適切なエスケープ処理がされていないとエラーとなりますので注意してください。なお、インポートウィザードでは下図のようなフォーマットを指定する項目があり、引用符を指定することができます。

もしもインポートでエラーが発生したら思い出してくださいね!