大量のcsvファイルを自動圧縮する方法

このQ&Aのポイント
  • UNIX Shell Scriptを使用して大量のcsvファイルを一括でtar.gz形式で圧縮する方法について検討しています。
  • PL/SQL部分でのファイル名指定が会社ごとに異なる仕様となっており、共通のエラー内容を持つファイルをまとめて圧縮したい場合、どのような記述方法が適切でしょうか?
  • ご存知の方がいらっしゃいましたら、教えていただきたいです。
回答を見る
  • ベストアンサー

大量のcsvファイルの自動圧縮

UNIX Shell Scriptで一度に大量のcsvファイル(40-50くらいあります)をtar.gzの形式で圧縮する記述を追加しようと検討しています。 tar -zcvf archive.tar.gz [ファイル名] のように記述すれば良いということは判りましたが、 PL/SQL部分でのファイル名の指定で、会社ごとのファイルが作成されるような仕様になっています。 file_name := UPPER(rec_kaisya_1.kaisya_cd) || '_KATAMEI_ERROR_' || to_char(sysdate, 'YYMMDD') || '.csv'; そこで、真中のエラー内容('_KATAMEI_ERROR_'がある部分です)が共通のファイルをまとめて圧縮するためにはどのように記述したら宜しいでしょうか? 何かうまい記述方法をご存知でしたら是非ご教示下さい。宜しくお願い致します。

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

  • ベストアンサー
  • katouka09
  • ベストアンサー率50% (130/256)
回答No.1

ワイルドカードを使えばできるのでは? tar -zcvf archive.tar.gz *error01*.cvs みたいにすればできると思います。 error01の部分はエラー内容になります。 あらかじめエラー内容がわかっているのなら簡単ですね。

shieage
質問者

お礼

ありがとうございました。私のところの環境では、tarのzオプションが使えないのが原因でした。下記のようにパイプで繋げてうまく行きました。アドバイス感謝致します。 tar -cfv file-name.tar.gz *aaa*.csv | gzip -f

関連するQ&A

  • PL/SQL文にて

    PL/SQL文にて、コーディングをしています。意図した通りにプログラムは動作するのですが、ファイルに何のデータも入ってこない場合の分岐処理を加えて、データが入ってこなかった場合にはファイルは作成しないというロジックを検討しています。どなたかうまいやり方をご存知無いでしょうか? --略-- --ファイル名設定 file_name := UPPER(rec_kaisya_1.kaisya_cd) || '_KATAMEI_ERROR_' || to_char(sysdate, 'YYMMDD') || '.csv'; --ファイルオープン(新規書き込みモード) File_Handle := UTL_FILE.FOPEN(file_dir, file_name, 'w'); --日付の書き込み UTL_FILE.PUTF(File_Handle, 'Created: %s\n', SYSDATE); --ファイルへの書き込み(改行のみ) UTL_FILE.NEW_LINE(FILE_HANDLE); --見出しの書き込み v_line_header := '会社コード, 会社名, 販製品名, 数量'; UTL_FILE.PUT_LINE(File_Handle, v_line_header); --会社毎のデータ取得 FOR rec_kaisya IN cur_kaisya(v_nenki,rec_kaisya_1.kaisya_cd ) LOOP --一行づつ書き込み UTL_FILE.PUTF(File_Handle,' ''%s, ''%s, ''%s, %s\n', rec_kaisya.kaisya_cd ,rec_kaisya.kaisya_jname   ,rec_kaisya.hanseihin_mei ,rec_kaisya.su); END LOOP; UTL_FILE.FCLOSE(File_Handle); END LOOP; --略--

  • /から圧縮したい

    ソラリスが動いているサーバーのデータのバックアップをしようと思っています。 テープデバイス以外の方法をご存知でしたら 教えていただきたいんです。 今やろうとしているのが tar.gzへの圧縮なんですが まとめて圧縮できないかと悩んでおります。 全データを一つにまとめて圧縮なんてできるんでしょうか? コマンドだとファイル名をbackup.tar.gzにするとして tar cvfz backup.tar.gz /  になるのですか?? よろしくお願いします。

  • perl で gz 圧縮する方法

     よろしくお願いします。  Perlで、次のようなプログラムを作ることになっています。 1 インターネット上からとあるファイル(容量はだいたい15kb程度、画像ファイルとか音声ファイルではありません)をダウンロードする。 2 このファイルをgz形式で圧縮する。 3 ファイル名を変更する。  この作業を多数回行う必要がある関係で、プログラムを組んでいます。  この点、1と3のプログラムは書けたのですが、2の部分が分からなくて困っています。 いろいろインターネットで検索したところ、「Archive::Tar;」を使っていると説明しているサイトがあって、それを参考にプログラムを組んでみました。  次のようなプログラムを組んでみましたが、gz形式に圧縮されないようです(圧縮されたファイルを再び解凍してみたところ、元のファイルに戻らなかった)。 use Archive::Tar; my $tar = Archive::Tar->new(); $tar->add_files( $newfilename1 ); $tar->write( $newfilename2 , 3 ); ( $newfilename1 はダウンロードしたファイル名、$newfilename2 は gz形式に圧縮したファイルの名前です)  この4行のプログラムは正しいのでしょうか?  間違っているのであれば、どこを直せばよいでしょうか?  よろしくお願いします。

  • tar.gz圧縮のファイルサイズについて

    レンタルサーバCPIにて、 公開ディレクトのWebデータを圧縮してバックアップをとりたいと思い、 tar.gz圧縮のスクリプトを書いてcronで自動実行(1日1回)させています。 生成されたデータをみると、 公開ディレクトリのファイル数やフォルダ数は同じにも関わらず、 tar.gzの圧縮ファイルのファイルサイズが毎回異なっているのですがこれはtar.gzの仕様でしょうか? コマンドは下記となります。 tar -czf /usr/home/*****/webdata.tar.gz /usr/home/*****/html/; お分かりの方、ご教示頂ければと思います。 どうぞよろしくお願いいたします。

  • tar圧縮ファイルが作成できず困っています。

    tarとgzipをパイプでつなげて使用すると、tar圧縮ファイルが正常に 作成できず困っています。(Solaris) *やりたいこと* ファイル一覧test.txtに記載されているファイルを一度に tar圧縮したい。(tar・gzip別々でなく) *コマンドライン* # tar cvfp - -I test.txt | gzip -c > test.tar.gz a aaa.txt 1K a bbb.txt 1K a ccc.txt 1K # ls -l test.tar.gz(←とりあえずファイルは作られている) -rw-r--r-- 1 root other 33235 5月 12日 10:03 test.tar.gz # gunzip test.tar.gz(←unzipもできる) gunzip: /usr/bin/gzip has 2 other links -- unchanged # ls -l test.tar -rw-r--r-- 1 root other 64076 5月 12日 10:03 test.tar # file test.tar(←この時点でおかしい。file種別がアーカイブじゃない) test.tar: ELF 32-ビット MSB 実行可能 SPARC バージョン 1[動的にリンクされています][取り除かれています] # tar xvfp test.tar(←エラーになる) tar: ディレクトリの検査合計エラーです。 # /bin/tar xvfp test.tar(←違うtarでやってみるとエラーがでる) tar: This does not look like a tar archive tar: Skipping to next header tar: Archive contains obsolescent base-64 headers tar: Read 2636 bytes from test.tar tar: Error exit delayed from previous errors 上記のような現象になって困っています。パイプ以降をcompressに するとふつうにいけるので、gzipがおかしいような気もするのですが。 サイトを検索するとみなさんGNUのgtarをお勧めしているようですが そちらもだめでした。 どなたか解決策をご存知の方がいたらご教授願います。

  • tar.gzファイルのリストアについて

    Postgres初心者です。 教えてください。 pg_dumpコマンドでdump拡張しのバックアップファイルを生成し、 tarコマンドで****.tar.gzファイルに圧縮しました。 このtar.gzのファイルを直接リストアするコマンドがあれば 教えていただけないでしょうか? -bash-3.2$pg_restore -U postgres -d (データベース名) < ****.tar.gz と実行すると、以下のエラーメッセージが表示されます。 →pg_restore: [アーカイバ] 入力ファイルが有効なアーカイブではないようです。 -bash-3.2$gunzip -C ****.tar.gz | pg_restore -d (データベース名) と実行すると、以下のエラーメッセージが表示されます。 →pg_restore: [tarアーカイバ] tarアーカイブ内でファイルtoc.dat用のファイルヘッダがありませんでした よろしくお願い致します。

  • 解凍ファイル

    ABファイルを解凍したいんですが 「ファイル名.ara.abはアーカイブファイルではありません。」 と出てしまいます。 今使っているソフトなんですがなんていうソフトか忘れたんですが、「.lzh .zip(pass) .bh .bz2 .cab .gz .tar .tar.bz2 .tar.gz .b64 .xxe .uue .exe .tar.gz」に圧縮できます。 abファイルは解凍できませんでしたが、aaファイルは解凍できました。 ABファイルが解凍できるソフトってないですか? 解凍お願いします。

  • ◆圧縮&伸張コマンド

    いつもお世話になっています。 Linux初心者です。 Linuxコマンドでの圧縮系はtar + gzipが一般的なのでしょうか? (他に手軽&圧縮率が高いのがあればご教授下さい) 【実行したい事】 定期的に動いているcronがあります。wgetで取得したファイル群(フォルダ含め)を取得後に圧縮をかけたい。で、次回のwgetをかける前に今度はファイル群(フォルダ含め)を元に戻したい。 cron ⇒ 伸張&展開(ファイル群) ⇒ wget ⇒ 圧縮(ファイル群。元ファイル群は削除) ⇒ cron お手数ですが、解凍 & 圧縮のサンプルコマンドをご教授下さるとありがたいです。 ↓↓↓こんな感じで問題ないのでしょうか? 伸張&展開: tar xvzf ***.tar.gz 圧縮&アーカイブファイル:tar cvzf ***.tar.gz dir(各フォルダ&ファイル群) wgetで-nc(取得済みは取らない)を使用しているので、ちゃんと元に戻って欲しい(当たり前ですが。。。)のとファイル群の容量が大きいので手軽に圧縮させたい。

  • csvデータをPostgreSQLにインポート

    RedHat8.0にpostgresql-7.2.3.tar.gzをインストールしています。database_6に接続し、 database_6=# COPY tablename FROM '/var/test/testdata.csv' WITH CSV; を実行すると(tablenameとtestdataとは同一名にしてあります)、 ERROR: parser: parse error at or near "csv" と表示されてしまいます。どこが悪いのでしょうか?

  • CSVファイル作成

     まだC,C++始めたばかりなので、よくわかりません。 以下のようなことを行いたい場合のプログラムをどなたか教えてください。 1)CSVファイルのファイル名は、日付(YYMMDD.CSV)。   ファイルが存在しない場合は、新規作成。   存在する場合は、データ追加。 2)データ要素は4項目(入力はキーボードから)。   この4項目+現在時刻(1項目)を1レコード   (1列)とする。

専門家に質問してみよう