【備忘録】MS AccessのテーブルにUTF-8のCSVをインポートするときに生じる不具合コンボの切り抜け方1
AccessのテーブルにUTF-8のCSVをインポートしようとしたら、謎の不具合が連続して現れたので、対処方法を備忘録的に書き留めておくことにしました。
まず、UTF-8のCSVを用意します。今回は以下からダウンロードしてみました。
次に、空のデータベースファイルを用意します。
[外部データ]→インポートのほうの[テキストファイル]をクリック。
ダウンロードしたCSVを選択して、「~新しいテーブルに~」にチェックを入れ、【OK】をクリック。
Shift-JIS形式じゃないと、こんな風に文字化けしますね。【設定】をクリック。
コードページで「Unicode(UTF-8)」を選択して、【OK】をクリック。
文字化けが直りました。【次へ】をクリック。
「先頭行をフィールド名として使う」にチェックを入れ、【次へ】をクリック。
ここで一つ注意点。
CSVの中身で、Excelで言うところの1セル内に改行がある場合、「テキスト区切り記号」でダブルクォーテーション(")を選択しておかないと、正しくインポートされません。今回は、Accessが自動的に選択状態にしてくれてました。
フィールドごとのデータ型を選択する画面ですが、とりあえず何もせずに【次へ】をクリック。
「主キーを設定しない」にチェックを入れて、【次へ】をクリック。
【完了】をクリック。
やはり、インポートエラーになりましたが、まあ想定内です。
どんなエラーがあるか、クエリを作って確かめましょう。
[作成]→[クエリデザイン]をクリック。
「テーブルの表示」でインポートエラーのテーブルを選択して、【追加】をクリック。→【閉じる】をクリック。
「エラー」「フィールド」をフィールド欄に追加して*1、[Σ集計]をクリック。
→【表示】または【実行】をクリック。
8つのフィールドでエラーが発生、エラーの内容は全て「フィールドの切り捨て」でした。1セル内の文字列が255文字以上あったときのエラーですね。
ここで第1の謎が現れます。
Accessは CSVのインポート時に、最初の25行からデータ型を自動判別してくれるのですが*2、どういうわけか1レコード目からエラーになっています。
「短いテキスト」と「長いテキスト」の判別はしないのか、というとそんなことはありません。
このように、「研究分担者」フィールドは自動判別されているのです。
まったく解せませんが、とにかく、このことを踏まえてインポートしなおしてみましょう。
長くなったので、続きは次回。