2016-12-16 5 views
1

私はそこに多くのテーブルを持つデータベースを持っています。それらのうちのいくつかは "mytable_"で始まる名前を持っています。これらのテーブルにはいくつかのインデックスがあります。今私はそれらのインデックスを同様のテーブルを持つ別のサーバーにも移動する必要があります。Postgres-与えられたテーブルに既存のインデックスを作成するためのスクリプトを作成するスクリプト

私は、ローカルサーバー上の特定のテーブルにあるすべてのインデックスを作成するスクリプトを用意したいと思います。

また、このインデックスを作成してもクラッシュしないようにしたいと思います。

それはPostgresのあなたは、余分なすべてのインデックス定義にpg_get_indexdef()を使用することができます

答えて

2

(PG管理者)で行うことができます方法:

select replace(pg_get_indexdef(format('%I.%I', schemaname, indexname)::regclass), ' INDEX ', ' INDEX IF NOT EXISTS ')||';' as ddl 
from pg_indexes 
where schemaname = 'public' 
    and tablename like 'mytable\_%'; 

replaceがようIF NOT EXISTSを「注入」するために使用されますそのような索引がすでにターゲット・データベースに存在する場合、ステートメントは失敗しません。

そのクエリの結果をファイルにスプールするだけです。

関連する問題