Q&A

回答の並べ替え:
投稿新規に質問を投稿する

テーブルからCSVの大量出力

sori sori

2024-06-14 09:05

お世話になります。
100万件のテーブルがあったとします。100万件全部をCSVに出力するのはアクションがあり可能です。しかし、20万件を抽出してCSVに出力する方法がみつかりません。65536件以内であれば、いったんはシートに出力して、それをCSV出力できますが、それを超えた場合の出力する方法があれば教えてください。
よろしくお願いいたします。

sori sori
Yexiongmao様
ありがとうございます。その方法であればテーブルを介在しないのでスピードが速いかもしれません。やってみようと思います。
Yexiongmao Yexiongmao
こんにちは。
シートを使わない方法として。「csvファイルを読み取りデータ変換して保存する」を使うのはどうでしょうか?
csvファイルを変換してシートを介さず別のcsvファイルを生成します。
テーブルから出力したcsvファイルであれば、項目名付きなので、フィルタリング条件で、テーブルデータの出力と同様の条件設定ができます。
100万件のcsvファイルは残ってしまいますが、少数の無意味なデータで上書きするか、テンポラリーファイルとして他に活用することも可能です。
sori sori
ご回答ありがとうございます。
出力用のテーブルの作成は、処理に相当な時間がかかりそうなので、懸念点ではあります。しかし、CSVを一つのファイルにするには、この方法しかなさそうですね。CSVにアペンドするアクションがあればいいのですが。
さらに検討してみます。よろしくお願いいたします。
新日本コンピュータマネジメント株式会社 新日本コンピュータマネジメント株式会社 パートナー
メダルベストアンサー
こんにちは

ご認識頂いている通り、条件を指定してCSV出力する際、
一旦シートに取込んでCSV出力する必要があります。
65536件のデータを超える場合は、「ページング」を応用してはいかがでしょうか。
ただし、ID、LAST_UPDATER、LAST_MODIFIEDの3カラムについては、変わってしまうため、必要に応じて、「(出力元テーブル名)_ID」などカラムを作成頂く必要があります。

【準備】
・CSV出力用のテーブルを用意する(以降、出力用テーブル)

【処理】
① 出力用テーブル内のデータを削除する(全件)
② 検索条件で出力する件数を取得する
③ シートの最大出力件数から繰り返し処理回数を算出
④ ③にて算出した回数分の次の⑤から⑦の処理を繰り返す
⑤ シートのデータの取得エリアをクリアする
⑥ 検索条件からデータをシートに取得する
⑦ 取得結果を出力用テーブルに登録する
⑧ 出力用テーブルからCSV出力

※【参考】「ページングを行う」:https://cloud.celf.jp/celf-help/ja/texts/tips/paging/paging.html

ご不明な点等がございましたら、改めてコメントいただけますでしょうか。

以上、よろしくお願いいたします。
メールコンタクトをとる