• ベストアンサー

Access テーブルを分割してエクスポートしたい

Access 2000のテーブルを指定した行数分に分割して、csv形式にエクスポートしたいと思っています。 例えば、100万件のデータを20万件×5ファイル、というイメージです(対象件数/分割件数ともに一定ではありません) 自分で考えてみたのですが、上位20万件をクエリ→削除クエリ→上位20万件をクエリ→削除クエリ・・・という 方法しか思い浮かばず、もっと簡単に出来る方法をお教えいただければと思います。 よろしくお願いします。

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

  • ベストアンサー
  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.5

#3です。 >考え方は同じでしょうか。 同じですね。 では、ループで読みながらコーディングでcsvに吐き出す というのはどうでしょう? カウンターで20万件ごとにファイル名を変えれば 良いかと思います。 あと別のmdbからリンクはって、ループで読みながら、TEBLEを20万件毎に作るとか。

itman
質問者

お礼

ありがとうございます。 調べてみたのですが「ループで読みながらコーディング」というのが分かりません。 お手数でなければ、詳しく教えていただければと思います。

その他の回答 (4)

  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.4

#1です。 こんなにたくさんのデータは扱ったことがないのですが、 秀和システムのはじめての裏技に次のようなものがあります ・順位の何位~何位を指定してデータを抽出する。 ・指定した順位までのデータを抽出する。 ここに参考ファイルがあります 解凍後、ura_vba chap05 waza133 と開いて 参考ファイルを参照してみてください。 気に入ったら本を買ってあげてください。

参考URL:
http://www.shuwasystem.co.jp/books/7980/0752-8/0752-8.html
itman
質問者

お礼

ありがとうございます。 まだチラッとしか見ていないですが、近いことができそうな感じがします。

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.3

自分なら、 ・フィールドを1つ増やす ・全件読みながら1から番号を振っていく ・選択クエリーでエクスポート =>0 And < 200000 =>200000 And < 400000 =>200000*i And < 200000*(i+1) をi=0からint(件数/200000)までループ でやるかなぁ。(回数はも少しキチンとコーディングするとして)

itman
質問者

お礼

最初は、フィールド(オートナンバー)を追加して選択クエリで1~20万、20万1~40万・・・とエクスポートしようと思ったのですが。データ量が大きすぎるためかエラーでフィールドを追加することができませんでした。 [全件読みながら1から番号を振っていく]のところが理解できなかったのですが、考え方は同じでしょうか。 ありがとうございました。

  • NorthMole
  • ベストアンサー率24% (20/82)
回答No.2

簡単にというわけにはいかないと思います。 元のテーブルを削除してしまってもよい or 複写してもよい(時間的にも)であれば、お考えの方法でよろしいかと思います。 たしかに、VBA等を駆使して元のテーブルを加工せずに行なうのであれば、 抽出するクエリーの条件に、「前回抽出した情報の最終値より○×大きい?小さい?」等の条件を入れるようにして 条件をコントロールするするしかないでしょう。 この場合、判定の元になるフィールドの値が同値のレコードが複数存在しないようにしなければいけませんが。 回答には程遠いかもしれませんね~

itman
質問者

お礼

自分で作業するには、全く苦にならない事なのですが。 他の人が作業するときに、もっと簡単に出来る方法があれば良いなー、と思いまして。 VBAと聞いただけで・・・(-_-;) どうもありがとうございます。

  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.1

質問中に削除クエリーと書かれていますが、 エクスポートはクエリーからもできます 選択クエリーを作成して、そのクエリーをエクスポートすれば良いのではないでしょうか。

itman
質問者

お礼

説明不足ですみません。 お答えの通り、選択クエリ(20万件)を作成してエクスポート。 元のテーブルからエクスポートした20万件を削除、という方法なのですが。

itman
質問者

補足

質問者です。補足させていただきます。 テーブルには、連番ではない数字が格納されているフィールドがあります。 私が考えた方法は、以下の通りです。 1)数字を比較して上位20万件を選択クエリで抽出してエクスポート 2) 1)でエクスポートしたデータを除くために元となるテーブルから1)のデータを削除クエリで削除 3) 2)のクエリ結果の中からまた上位20万件を選択クエリで抽出してエクスポート ・ ・ ・ と繰り返す

関連するQ&A