• 締切済み

DBの全ユーザーテーブルに対するtruncate

PostgreSQLを勉強中の者です。 データベースの全ユーザーテーブルに対して、個別にtruncateをかけるいい方法を探しています。  \pset pager  \dt 以上のコマンドを実行して、テーブル一覧を表示できることをはわかったのですが、ここから先の妥当なやり方がわかりません。 リダイレクトして、テキストエディタで加工して、シェルのようなもので流し込む・・・のような形になるのでしょうか? 実例も含めて教えていただけると助かります。 また、truncateされたことの上手い確認方法もあれば御教示下さい。 よろしくお願いします。

みんなの回答

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

テーブル一覧が取り出せるならawkでなんとでもなりますよね。 table1 table2 table3 を TRUNCATE table1; TRUNCATE table2; TRUNCATE table3; としてテキストに書き出します。 で、実行なのですがこれでは新しく増えたテーブルも 自動で消してしまいますから 普通はTRUNCATEが書かれたテキストファイルに消したいテーブルを並べて 実行する形を取ります。 確認は select count(*) で件数表示してすべて0であることを確認すればいいですね。 重複行(0,0,0,0,0,,,,)を消せば簡単に確認できますね。

関連するQ&A

  • truncate文で全テーブルを一気に削除できるか?

    さきほどと似たような質問ですみません。 SQLコマンドであるデータベースの全テーブルを削除したいんですが、 truncate一文ですませる方法はないでしょうか。 それとも、一行ずつ truncate tableA truncate tableB .... とやっていくしかないのでしょうか?

  • TRUNCATEの権限設定について

    現在、phpおよびPostgreSQLを使用して WEBアプリケーションを開発しています。 その中で、あるテーブルのデータを一括削除するために TRUNCATEを使用したいと思い、以下のようにTRUNCATE権限を設定しようと したところ以下のエラーになりました。 ERROR: unrecognized privilege type "truncate" truncateタイプの権限設定が認められていない感じのエラーでしょうか。 ちなみに、テーブル作成および権限設定はphpPgAdminを使用して行いました。 SQLは以下の通りです。 CREATE TABLE stock_tbl ( cc_no int, course_no int, date int, time_no int, status int NOT NULL DEFAULT 0, del_flg int NOT NULL DEFAULT 0, create_dt timestamp NOT NULL DEFAULT now(), update_dt timestamp NOT NULL DEFAULT now(), PRIMARY KEY (cc_no, course_no, date, time_no) ); REVOKE ALL ON stock_tbl FROM admin; GRANT SELECT, UPDATE, INSERT, DELETE, TRUNCATE ON stock_tbl TO admin; 環境は以下の通りです。 サーバーはCentOS5.5 PostgreSQLのバージョンは8.1.23 phpPgAdminのバージョンは4.1.3 バージョンなどの問題でTRUNCATEの権限を設定できないのかなと思い 色々調べてみたのですが、解決に結びつくものが見当たりませんでした。 なんとか、上記テーブル、ユーザーにTRUNCATEの権限を与えたいのですが どのように設定を行えばよろしいでしょうか? 補足ですが、PostgreSQLのバージョンが8.1.22で 上記テーブルに何の特権も設定せずにアプリケーションでTRUNCATEを 実行してもエラーになりませんでした。 どなたか、上記に関してアドナイスをいただけないでしょうか? よろしくお願いいたします。

  • DBのテーブルの使用量

    現在、PostgreSQLを使用してWebアプリケーションを作成しています。 いくつか、テーブルがある中で、一つのテーブルが使用している容量をしるSQLコマンドってあるのでしょうか。 SQLコマンドでなくてもかまいませんので、使用量が分かる方法を教えて頂けないでしょか。 よろしくお願いします。

  • postgreSQLでテーブルの一覧

    他人が管理していたUNIXマシンのデータベースがあります。 postgreSQLです。 さて、SQLコマンドで、SELECTとかINSERTとかはわかった(というか 教わった)のですが・・・・ テーブルが複数あるようなので、そのテーブルの一覧というか、 すべてのテーブルの名称を見るにはどうしたらよいのでしょうか?

  • テーブル領域をrmコマンドで消してしまいました.

    Oracle(ver8)データベースを使って、sqlコマンドでテーブルを作成後、UNIXのrmコマンドでテーブル領域を削除しまいました。 そのため、Oracle起動時にこの領域をマウントしようとして失敗してしまい データベースにアクセスできません。 復旧方法をご教授下さい。 テーブルは不要なので、Oracleデータベースにこの領域が削除されていることを認識させたいのです。

  • 配列データをDBのテーブルに入れるには?

    PHPでPostgreSQLを使って苦戦しています。 PHPでファイルを読み込み、PHPの配列 tsv にデータが格納されています。 1レコード30件ほどのデータで件数が数百件あります。 この配列tsvのデータをデータベース database にある既存テーブル 累積 に 追加したいのですが、どうにもうまくいかず困っています。 $result = pg_insert($database,"累積",$tsv); if (!$result) { rollback_tran(); print('pg_insertが失敗しました。'.pg_last_error()); $err_flg = 1; goto ENDCLR; } 色々な方法を試しすぎて、頭を冷やさないと、と思ってこちらにも 書かせていただきました。 ヒント等、いただけますと助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpMyAdminの利用方法 テーブルのフォルダ分けについて

    phpMyAdminの利用方法 テーブルのフォルダ分けについて phpMyAdminを開きデータベースを選択すると、 左のメニュー画面にテーブル一覧が表示されます。 そのとき、テーブル一覧を+-マークのついた フォルダ単位にまとめることができるようなのですが、 どのようにすればできるのでしょうか。 ひとつのデータベース中に複数のアプリケーションを動作させるため、 たくさんのテーブルが混在してしまっているのを、 phpMyAdminの表示時にアプリケーションごとにテーブルを うまくまとめて表示させるようにしたいと思っております。 どうぞよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 、cronのユーザは postgresでないとpg_dumpallが実行できません。

    CronでPostgreSQLのデータベースをバックアップするにあたり pg_dumpallコマンドで実行させるのですが、cronのユーザは postgresでないと実行できません。 コマンドユーザーをrootにして、pg_dumpallを実行させたいのですが、何か良い方法はありますか? cronにはpg_dumpall直接書き、またはスクリプトでも構いません。

  • MySQLとPostgreSQLについてのSQLインジェクション

    はじめて質問させていただきます。 よろしくお願いします。 現在、私は大学の研究テーマでデータベース(MySQL、PostgreSQL)を使っているCGIを自作し、それぞれのデータベースについてSQLインジェクションの脆弱性について調べる、という研究を行っています。 ブラインドSQLインジェクションについて調べているのですが、 PostgreSQLの場合、pg_tablesというテーブルにデータベースのテーブル一覧表がのっていて、それを参照することでテーブル名が取得でき、いろいろ悪いことができてしまいますが、MySQLの場合、ブラインドSQLインジェクションを起こそうと思った場合どのようなコマンドを使えばよいのでしょうか? SHOW TABLESで使用中のデータベースのテーブル一覧は取得できますが、それをクエリの一部として使うことはできるのでしょうか・・・? また、全く関係ない質問なのですが、このCGIはRubyで記述して作りました。Rubyにはプリペアドステートメントという機能があるのですが、これをデータベースにアクセスするすべての箇所で用いればSQLインジェクションは100%起きないといえるのでしょうか?(現在考え得る範囲でよいのでお願いします) 卒論で困っているので知っている方がおられましたらどうかよろしくお願いいたします。

  • phpでデータベースのデータ書換え

    現在phpでデータベース(postgresql)を扱える勉強中なんですが、 テーブルの一覧を表示して、そこから指定のレコードを選択して、そのデータを書き換えて上書きしたいのですが、どのようにしたらいいのかお手上げです。 一部分を書き換える方法も分かりましたし、一覧の表示の仕方も分かったのですが、一覧表示から選択し表示したテーブルを、表示だけでなくその状態で書換えできる状態にして、書き換えたレコードを丸ごと上書きしたいのですが、なかなか参考にできるサイトが見つからずに困っています。 おすすめのサイトでもあれば教えていただけないでしょうか。

    • 締切済み
    • PHP