#528 インポート定義を確認するには? クエリ

Accessでは、CSVファイルなどのテキストファイルをAccessのテーブルとしてインポートする際、CSVファイル上の各列をテーブル上のどのような形式のフィールドとして取り込むかを定義しその定義を保存しておくことができます。

通常のマニュアルによるインポート操作では、テキストインポートウィザードの画面左下の[設定]ボタンをクリックすることによって「インポート定義」ダイアログが表示されますので、そこでフィールド情報を定義したり、[保存]ボタンでそれを保存したり、あるいは[定義]ボタンによって保存済みの定義を呼び出してそのインポート処理に適用させたりすることができます。
テキストインポートウィザードからの各画面

このインポート定義を使うことによって、次回同様のインポート操作を行う際にわざわざ再度フィールド定義をする必要がなくなります。またVBAでインポートを自動化する際にも、インポート定義名を引数に指定してインポートさせることもできます。


ここで、そのインポート定義の内容を、わざわざテキストインポートウィザードを起動せずに、クエリを使って確認する方法について説明します。

それには次のような手順でクエリを作ります。
  1. システムオブジェクトを表示するまずナビゲーションウィンドウの最上部のバーを右クリックして[ナビゲーションオプション]を選択、表示された「ナビゲーションオプション」のウィンドウで[システムオブジェクトの表示]にチェックを付けます。

    ※ただし次の手順のクエリ作成において、SQL文を直接クエリのSQLビューに書き込めば、この作業は必須ではありません。
    ※このことから、インポート定義の情報はAccessのシステムオブジェクトとして隠れてはいるものの、ひとつのテーブルとして保存していることが分かると思います。


  2. 次に、クエリのデザインビューを表示し、次のようなクエリを作成します。
    ここでは、「MSysIMEXSpecs」と「MSysIMEXColumns」の2つのテーブルを配置し、「SpecID」フィールドで両者を結合しています。あとは任意のフィールドをグリッド上に配置するだけです。
    クエリのデザインビュー

    SELECT MSysIMEXColumns.SpecID, SpecName, FieldSeparator,
    FieldName, DataType, IndexType, SkipColumn
    FROM MSysIMEXColumns INNER JOIN MSysIMEXSpecs
    ON MSysIMEXColumns.SpecID = MSysIMEXSpecs.SpecID
    ORDER BY MSysIMEXColumns.SpecID;


  3. クエリをデータシートビューに切り替えると、既存のインポート定義の情報が表示されます。
    クエリのデータシートビュー
    ※ただし主キーの関係でこの画面で設定値を編集することはできません。編集したい場合は「#529 インポート定義のフィールド設定を編集するには?」をご覧ください。

この画面で確認できる情報は次の通りです。下図のインポート定義の画面と見比べてみてください。
インポート定義の画面
テーブル名 内容
MSysIMEXSpecsテーブル ひとつのインポート定義に関する全体的な定義情報が格納されています(1対多の1側)
MSysIMEXColumnsテーブル あるインポート定義についてフィールドごとの定義情報が格納されています(1対多の多側)

フィールド名 内容
SpecID オートナンバー型で振られたインポート定義のID
SpecName インポート定義名
FieldSeparator フィールド区切り記号
FieldName テーブル上のフィールド名
DataType データ型
IndexType インデックスのタイプ
SkipColumn インポートをスキップするかどうかのフラグ

これらのシステムテーブルには他にもいろいろフィールドがあります。またインポートするテキストファイルが区切り記号付きか固定長かによっても保存されている内容が変わります。詳しくは、クエリのグリッドにそのフィールドを配置してみて、インポート定義の画面と比較して確認してみてください。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved