[解決済み] Postgresデータベースの全テーブルを切り捨てる
2022-04-20 13:06:31
質問
PostgreSQLデータベースを再構築する前に、定期的にデータをすべて削除する必要があります。SQLで直接これを行うにはどうしたらよいでしょうか?
今のところ、実行する必要のあるすべてのコマンドを返すSQL文は何とか思いつくことができました。
SELECT 'TRUNCATE TABLE ' || tablename || ';' FROM pg_tables WHERE tableowner='MYUSER';
しかし、一度手に入れたものをプログラム的に実行する方法が見当たりません。
解決方法は?
FrustratedWithFormsDesignerの言うとおり、PL/pgSQLで可能です。以下はそのスクリプトです。
CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE
statements CURSOR FOR
SELECT tablename FROM pg_tables
WHERE tableowner = username AND schemaname = 'public';
BEGIN
FOR stmt IN statements LOOP
EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
END LOOP;
END;
$$ LANGUAGE plpgsql;
これはストアド関数を作成し(一度だけ行う必要があります)、その後、次のように使用できます。
SELECT truncate_tables('MYUSER');
関連
-
Postgresqlの操作でSQL文の実行効率を表示する
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] TSQLを使用してデータベース内のすべてのテーブルのリストを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] PostgreSQLでデータベースのコピーを作成する
-
[解決済み] postgres: ユーザーをスーパーユーザーにアップグレードしますか?
-
[解決済み] 'ユーザー "postgres" のパスワード認証に失敗しました'
-
[解決済み] Postgres の全テーブルの行数を求めるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Centos環境でのPostgresqlのインストールと設定、環境変数の設定Tips
-
エクセルテーブルのデータをpostgresqlのデータベースにインポートする方法
-
Postgresqlの操作でSQL文の実行効率を表示する
-
Postgresqlのデータベースにおける配列の作成と変更に関する操作
-
PostgreSQLにおけるVACUUMコマンドの使用方法
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] Postgres 9.4でJSONB型のカラムに対して更新操作を実行する方法
-
[解決済み] varcharフィールドの型をintegerに変更する。"自動的にinteger型にキャストすることはできません"
-
[解決済み] PostgreSQLでカラムのデフォルト値を変更するにはどうすればよいですか?
-
[解決済み] PostgreSQL の全コンテンツを削除する