ACCESS2000での大量データ処理とは?

このQ&Aのポイント
  • ACCESS2000を使用して、CSVファイルの情報をインポートし、集計処理を行いたいと考えています。CSVファイルは20フィールドで1レコード、1400レコードで1件構成されており、処理する人数は3万件です。
  • 質問1:1400レコード×3万件の情報をインポートできるか?テーブルの制限量を超えないか?
  • 質問2:インポート時に必要なフィールドのみをインポートするVBAはあるか?必要・不要を判別するフィールドは存在するか?
回答を見る
  • ベストアンサー

ACCESS2000での大量データ処理

CSVファイルの情報をACCESS2000にインポートして集計処理をしたいと考えてます。 CSVファイルの構成は、20フィールド(全て文字属性)で1レコード、1400レコードで1件となっております。(この仕様を変更する事は出来ないのが条件です。) 言い直せば、1名分の情報は1400レコードあるとなります。但し、集計に使用する情報はその内の400レコードであり、1000レコードは不要です。 処理する人数は3万件ぐらいあります。 (1)1400レコード×3万件の情報をインポート出来るのでしょうか?    テーブル制限の1Gを超えないのでしょうか(テーブルサイズの参照方法も?) (2)CSVをインポートする際に、必要なフィールド400だけインポートできるVBAはあるのでしょうか?  必要不要の判別フィールドはあります。 (3)インポート後、ACCESSで400項目を1レコードにする事はできないか?255以上のフィールドのテールを処理する方法はあるのでしょうか? (4)このような大量集計を可能にするには、みなさんは何を使用しているのでしょうか? よろしくお願いいたします。

  • rei230
  • お礼率92% (153/166)

質問者が選んだベストアンサー

  • ベストアンサー
  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.1

(1)データ次第? (2)データの作り方によると思いますが、大抵VB/VBS/VBAのいずれで可だと思います。 (3)テーブルを分割すれば可能。 (4)VB・VBS・VBA・テキストエディタなど。場合によってはぜんぜん関係ないアプリのスクリプト機能などで処理する場合もあります。 文字ベースでの集計とはどのようなことをされるのでしょうか? また、最終的にどのようなアウトプットを望まれているのでしょうか? SQLserverなら、結構なレベルまで、適当にやってもどうにかなりますが、Aceessのように制限値が低いものは、特にデータベースとして適正化をしっかり行わないと、処理に莫大な時間がかかります。場合によっては都度CSVデータを読み込みつつ、即座に捨てるようなやり方が早いこともあります。 一番最初にアウトプット(目的)に沿った作業の適正化を行うことをお勧めします。

rei230
質問者

お礼

お礼が大変遅れてしまい申し訳ございませんでした。 (1)すみません。データ次第の意味がわかりません。 (2)すみません。VBAの参考コードありますか (3)わかりました (4)わかりました >文字ベースでの集計とはどのようなことをされるのでしょうか?  受け取りの属性が文字列ということです。中身は数値 >また、最終的にどのようなアウトプットを望まれているのでしょうか?  インポートした多数のフィールドで、標準偏差や平均等を算出します。  アウトよりか、読み込んだ結果が1レコードで処理出来ればと思ってました。 最適化の件は、十分注意していきたいと思います。 まだ、先が見えないですが、ありがとうございました。

関連するQ&A

  • ACCESSVBAでテキストを処理のコード

    ACCESS VBAを使用してCSVファイルをインポートしたいのですが、CSVファイルは数十万レコードの構成になっており、内必要なレコードは数千件です。 そこで、テーブルにインポートする前に、VBAでCSVファイルを1件づつ読み込み必要か不要かを判断してインポートしたいのです。  必要、不要の判別は、あるフィールドの内容(商品コード)が、登録マスタ(商品コード群)に登録されている場合(一致)はインサートする。 といった感じのVBAコードの記述をさがしてます。 参考コードやサンプルURL等をおしえてください。

  • Accessへの大量データ登録

    Access VBAの初心者です。 現在、VBAにてAccessのテーブルに100万レコード程度のデータを登録しようとしています。 最初は1レコード毎、SQLでinsertしようとしていたのですが、時間が想定以上にかかるので断念しました。 次に、CSVに一回書き出してDocmd.TransferTextすることを検討しましたが、読み込んだテーブルにselectした結果が安定しないため色々調べたところ、DoCmdは非同期で動くらしいです。 とすると次のクエリをかけるにはちゃんと全レコード読み込んだかを確認し、読み込んでいなければウェイトをかける処理を入れる必要があり、これも馬鹿馬鹿しいのでやりたくありません。 そこでお聞きしたいのですが、このような場合、どのような処理をするのが定石なのでしょうか。 皆様のお知恵をお借りできれば幸いです。 宜しくお願いいたします。

  • Access(アクセス)でのインポートについて

    テーブルのインポートでエクセルファイルをインポートしたいのですが「ワークシートインポートウィザード」の画面でテーブルを指定して保存すると 「Microsoft Access」の画面で「すべてのデータをテーブルに追加できませんでした。 キー違反のため、0件のレコードのデータが失われ、0件のレコードが削除されました。」と出てきて、保存できません。 もとのテーブルのデータ型を使ってインポートするにはどうしたらいいのでしょうか。よろしくお願いします。 インポートする元のデータ(エクセル)とインポート先(アクセス)の関係は次の通りです。 エクセルファイル    アクセスのテーブル (セルの書式設定)   データ型、フィールドサイズ --------------------------------------------- 数値          数値型、長整数型 文字列         テキスト型、16 インポートする前に元のエクセルデータをアクセスのデータ型に合わせただけではダメなのでしょうか

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • csvファイルをAccessに取り込むとデータ数が増える

    項目をカンマで区切っただけの単純なcsvファイルをAccessでインポートしてテーブルを作成したら、データ数が増えてしまいました。 (csvファイルをテキストで開いたときの行数と、Accessの行数が異なる) 5000件ぐらいなら、csvもAccessもデータ数は同じなのですが、データ数が大きくなると、csvとAccessのテーブルで6万件とかの差分が出てしまいます。 csvファイルとAccessで、データ数を同じにするにはどうしたら良いでしょうか。 参考になるURLでも良いので、教えて頂ければと思います。 よろしくお願いします!

  • CSVファイル読み込みでズレがおきる

    お世話になります。 Windows XP SP3、Access2003 で CSVファイルをインポートする処理をつくっています。 読み込むCSVファイルが大きく、必要ないフィールドが多いのですが、 下記のようにLine Input で全部読み込んで Splitでカンマ区切りでバラしてvarData(Variant型)にいれて レコードセット(インポート先の既存テーブル)に入れる時に、 必要に応じてデータ型を変更して フィールド指定ししていれるようにしています。 ところが、CSVファイルの中のデータで数件ほど ちゃんと読み込めないものがあり、 レコードセットにいれるときにエラーでとまってしまいます。 調べてみると、フィールドで取得した値がずれており、 前の方の複数のフィールドでNull値があった場合?に ずれ込むことがあるようです。 どうしたらこの現象はなおせるのか教えてください。 それとも・・・ このようにフィールド指定してレコードセットに入れ込むよりも 一度CSVファイルの全レコードを他のテーブルにインポートして、 そこからインポート先の既存の本テーブルにいれたほうがいいのでしょうか? よろしくお願いいたします。 Open ---- For Input As---- Line Input #lngFileNum, strData インポート先のテーブルをレコードセットで開く DAO、トランザクション使用 Do Until EOF(lngFileNum) Line Input #lngFileNum, strData 'データを配列へ varData = Split(strData, ",") With rs .AddNew !番号 = CLng(varData(0)) !名称 = varData(1) !受付日 = DateValue(varData(8)) !種別 = varData(10), "" !登録番号 = CLng(varData(11))           (以下略)

  • 大量データの取得処理について

    テーブル1のレコードを全件取得し、取得したレコードの特定の項目を一件ずつチェックし、テーブル2の値を更新する処理を考えています。 しかし、テーブル1のレコード数が8万件存在するため、一気に全件を取得するのはまずいことになるのではと危惧しています。 そこで、fetch first ~ rows を使用するため、テーブル1に項目を追加し、更新が済んだらその項目にフラグを立てるような処理も考えましたが、 たった一度の処理のためにテーブルに項目を追加するのもどうかなと思っています。 1000件くらいずつ順番に取得できる良い方法があったら教えてください。 よろしくお願い致します。 ちなみにデータベースはDB2を使用しています。

  • Access2000 csvファイルのインポート

    Access2000のVBAを使用してcsvファイルを用意されたテーブルにインポートをしたいのですが、 やっかいな条件があります。 ある決められたフォルダに複数のファイルが存在している、そこから全てのCSVファイルを読み込み、3フィールド目(1行目はタイトル行)の値が「"3"」のものだけインポートする。 あるフィールドには、255文字以上のフィールド(改行文字あり)があります。このフィールドはインポートしてもしなくてもよい 今までは、インポート定義を設定してインポートしていたのですが、csvファイルを判別して、インポート前にフィールドの判別をする方法がわかりません。また、255文字以上の対応もうまくいきません。   

  • Accessもしくはファイルメーカー詳しい方

    csv形式で100万件程のデータがあり、ファイルメーカーにインポートしたところ全てを一度にインポートすることが出来ません。何か良い方法はないですか? Accessで開いて見ることはできます。 Accessで10000件ずつくらいをコピーしてエクセルに 貼り付けして、ファイルメーカーにインポートしていってるんですが・・・作業が大変です。 何とかする方法ありませんか?どうしても作業をファイルメーカーでやりたいので教えてください。 Accessで●レコードから●レコードというようにレコードを指定してcsvでエクスポート等は出来ますか?

  • アクセスで大量のデータを扱う際の注意は?

    アクセスである機器での計測データの管理、集計などの作業を行いたいと考えています。 計測データのレコード数が多いので、それらを効率良く管理するためのノウハウを知りたいと思い質問させて頂きました。 実際にレコード数がどの程度かというと、計測間隔が30秒に1回、計測機器が最大90点まで接続可能であることから、 一日最大259,200レコード、さらに時間と機器名称のデータが各レコードに追加されます。(各計測値は小数点以下第2位までの小数) これを1年積み重ねると94,608,000レコードという膨大な数量になってしまいます。 さらにこれを何年、というかたちで積み重ねてゆくことを考えて、これらの大量のデータを効率よく管理、または集計に利用するために 必要な知識、テーブルの作り方やファイル管理の方法などをご教授頂けたらと思います。 拙い知識の中で私が現在検討している内容としては、 (1)1年半前までのデータはテーブルに残しておきたい (直近データの処理レスポンスを重視したい/前年同月での比較等を行いたいため) (2)1年半以上前のデータはどこか別の所へバックアップし、必要な時に読み込んでくる様にしたい (1年半以上前のデータは集計に利用する頻度が稀であるため) (3)アクセスで行う集計はごく簡単なもの (ある期間を指定したらそのデータを抽出し、グループ毎に和算をして、それをグラフ化する。 一度の集計で利用するのは、最大でも全体の中の1,000レコード程。多くの場合は120レコード程しか使用しない) (4)基本的にアクセスで行う集計にはレスポンスの速さが要求される。(特に直近データ) 基本的にデータは大量なのですが処理自体はとても簡単なものなのです。 大量のデータを保存している影響を処理スピードに与えないようなシステムを作るにはどんな所に注意をしたらよろしいのでしょうか? よろしくお願いいたします。

専門家に質問してみよう