- ベストアンサー
Access テーブルを分割してエクスポートしたい
Access 2000のテーブルを指定した行数分に分割して、csv形式にエクスポートしたいと思っています。 例えば、100万件のデータを20万件×5ファイル、というイメージです(対象件数/分割件数ともに一定ではありません) 自分で考えてみたのですが、上位20万件をクエリ→削除クエリ→上位20万件をクエリ→削除クエリ・・・という 方法しか思い浮かばず、もっと簡単に出来る方法をお教えいただければと思います。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 >考え方は同じでしょうか。 同じですね。 では、ループで読みながらコーディングでcsvに吐き出す というのはどうでしょう? カウンターで20万件ごとにファイル名を変えれば 良いかと思います。 あと別のmdbからリンクはって、ループで読みながら、TEBLEを20万件毎に作るとか。
その他の回答 (4)
- miwaharu
- ベストアンサー率25% (29/112)
#1です。 こんなにたくさんのデータは扱ったことがないのですが、 秀和システムのはじめての裏技に次のようなものがあります ・順位の何位~何位を指定してデータを抽出する。 ・指定した順位までのデータを抽出する。 ここに参考ファイルがあります 解凍後、ura_vba chap05 waza133 と開いて 参考ファイルを参照してみてください。 気に入ったら本を買ってあげてください。
お礼
ありがとうございます。 まだチラッとしか見ていないですが、近いことができそうな感じがします。
- palmmy
- ベストアンサー率38% (841/2169)
自分なら、 ・フィールドを1つ増やす ・全件読みながら1から番号を振っていく ・選択クエリーでエクスポート =>0 And < 200000 =>200000 And < 400000 =>200000*i And < 200000*(i+1) をi=0からint(件数/200000)までループ でやるかなぁ。(回数はも少しキチンとコーディングするとして)
お礼
最初は、フィールド(オートナンバー)を追加して選択クエリで1~20万、20万1~40万・・・とエクスポートしようと思ったのですが。データ量が大きすぎるためかエラーでフィールドを追加することができませんでした。 [全件読みながら1から番号を振っていく]のところが理解できなかったのですが、考え方は同じでしょうか。 ありがとうございました。
- NorthMole
- ベストアンサー率24% (20/82)
簡単にというわけにはいかないと思います。 元のテーブルを削除してしまってもよい or 複写してもよい(時間的にも)であれば、お考えの方法でよろしいかと思います。 たしかに、VBA等を駆使して元のテーブルを加工せずに行なうのであれば、 抽出するクエリーの条件に、「前回抽出した情報の最終値より○×大きい?小さい?」等の条件を入れるようにして 条件をコントロールするするしかないでしょう。 この場合、判定の元になるフィールドの値が同値のレコードが複数存在しないようにしなければいけませんが。 回答には程遠いかもしれませんね~
お礼
自分で作業するには、全く苦にならない事なのですが。 他の人が作業するときに、もっと簡単に出来る方法があれば良いなー、と思いまして。 VBAと聞いただけで・・・(-_-;) どうもありがとうございます。
- miwaharu
- ベストアンサー率25% (29/112)
質問中に削除クエリーと書かれていますが、 エクスポートはクエリーからもできます 選択クエリーを作成して、そのクエリーをエクスポートすれば良いのではないでしょうか。
お礼
説明不足ですみません。 お答えの通り、選択クエリ(20万件)を作成してエクスポート。 元のテーブルからエクスポートした20万件を削除、という方法なのですが。
補足
質問者です。補足させていただきます。 テーブルには、連番ではない数字が格納されているフィールドがあります。 私が考えた方法は、以下の通りです。 1)数字を比較して上位20万件を選択クエリで抽出してエクスポート 2) 1)でエクスポートしたデータを除くために元となるテーブルから1)のデータを削除クエリで削除 3) 2)のクエリ結果の中からまた上位20万件を選択クエリで抽出してエクスポート ・ ・ ・ と繰り返す
お礼
ありがとうございます。 調べてみたのですが「ループで読みながらコーディング」というのが分かりません。 お手数でなければ、詳しく教えていただければと思います。