- 締切済み
Access2003を使いバラバラのCSVをひとつにまとめる
5種類位のCSVデータをひとつの統一したテーブルにまとめたいと 考えています。以下、その例です。 Aデータ:郵便番号、都道府県、市区町村、残り住所、苗字、名前、電話番号 Bデータ郵便番号、住所、氏名、電話番号市外局番、市内局番、局番 これを 統一データ:郵便番号、都道府県、市区町村、残り住所、苗字、名前、電話番号 というデータにまとめたいと思います。 AとBのデータは日々増えていくので増えた分をAccessを使って統合し 別の用途に利用するつもりです。ですので毎日作業は発生します。 このような場合のベストなテーブル構成やクエリー等をアドバイスいただけ ますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
もともと発生するデータの形式によっては余り参考にならないかもしれませんが、RDBの考え方を上の例に反映させると、 郵便番号のテーブルだけ別に持つというのもアイデアだと思います。 アクセスにももともと入っていますし、郵便局のホームページから最新版をダウンロードすることもできます。 そうすれば、統一データに都道府県、市区町村を入れなくても対応できます。 (処理速度の関係から入れておいたほうが良い場合もあります。)
- O_cyan
- ベストアンサー率59% (745/1260)
統一データ:郵便番号・都道府県・市区町村・残り住所・苗字・名前・電話番号 この並びでテーブルを作って問題ないと思います。例えば統一テーブルとします。 この統一テーブルに複数のCSVからテーブルに保存するには各CSVをテーブルにインポートしクエリで統一テーブルへのテーブル追加クエリをそのCSVデータ分作れば出来ます。 例から言えばAデータはそのままでクエリを作りテーブル追加クエリにすればOKです。 Bデータはテーブルにインポートしたレコードを住所を都道府県・市区町村・残り住所に分解。氏名を苗字・名前に分解。電話番号市外局番、市内局番、局番を結合して電話番号へ追加しなくてはいけません。 クエリで氏名で苗字と名前の間にスペースが入っていれば問題なくInStrとMidを使って分解できます。電話番号市外局番、市内局番、局番はクエリ上で電話番号市外局番&市内局番&局番のように結合した値を求め電話番号に保存すれば良いでしょう。 住所を都道府県・市区町村・残り住所に分解するのもInStrとMidで出来ます。(例えばInStrで住所の"県"の位置を求めMidでその値までを切り出す。次に"市"までを同様に切り出す。残りを切り出す。同様に東京なら抽出条件を"東京都"を含むレコードにして抽出し"都"と"区"や"市"で同様に切り出す。) こんな感じで出来ます。これが一番簡単なやり方だと思います。 CSVをそのままテーブルにインポートしないようにするならAデータやBデータ用のテーブルを作りCSVをそれぞれのテーブルにインポートする際に各フィールドに分解してテーブルに保存しそこから統一テーブルにレコードを追加する。 インポート定義など使えば出来ます。VBでCSVをそれぞれのテーブルに分解後インポートすることもできます。