blog技術的なことを主にこの広告は、90日以上更新していないブログに表示しています。PostgreSQL仕事でPostgreSQLを利用しているのですが、いろいろと理解できていなかったところがあったので、その中でもtemplate0,template1,postgresについてtemplate0とtemplate1の違いについてtemplate1createdb実行時に-Tで指定しない場合はデフォルトで雛形として利用されます。雛形のため、template1を変更しても、変更以前に作成されたDBにはその変更は適用されません。変更後に作成したDBには同じ変更が適用されます。コードセットの設定や、拡張コマンドなどをいれるとよいでしょう。テーブルなども作成しておくことは可能ですが、あまり有効な利用方法は思いつきません。template0PostgreSQLの最低限必要もののみが設定されています。template0を指定します。posgres(DB名)についてデフォルトのDB名。qsqlなどコマンドで接続先を指定しない場合に利用されます。サードパーティのユーティリティも、postgresDBに接続していろいろなコマンドを実行することが多いです。initdbについてinitdbを実行すると、まずtemplate1が作成されて、それをtemplate0とpostgresにコピーします。マニュアルを読むと、template0を雛形にしてtemplate1が作成されるとありますが、実際には上記の順番で作成。実質initdbした直後はtemplate0とtemplate1は同一のため、それほど気にする必要はなさそうです。ついてバックアップファイルには、そのDB作成時に利用したテンプレートの内容も含まれます。pg_dumpで作成されるダンプはtemplate0と相対関係にあります。template1を経由して追加されたあらゆる言語、プロシージャなどもpg_dumpによりダンプされます。その結果としてリストアする際に、カスタマイズされたtemplate1を使用している場合は、上記の例のように、template0から空のデータベースを作成する必要があります。DBをリストアする場合に、事前にDBを作成してリストアする場合にはtemplate0を利用しないと、template1の変更点が重複するため、template0を利用するのがおすすめのようです。https://www.postgresql.jp/document/9.3/html/app-pgrestore.htmltemplate1データベースに対し独自の変更を行っている場合、pg_restoreの出力は、確実に空のデータベースにロードするよう注意してください。しないと、おそらく追加されたオブジェクトの重複定義によってエラーが発生します。独自の追加が反映されていない空のデータベースを作成するには、template1ではなくtemplate0をコピーしてください。リストア時には、新規データベースにて、template1で使えるようにした拡張コマンドがそのままでは利用できなくなります。pg_dumpallについてpg_dumpallでは、以下をバックアップします。template0で作成するようになっています。そのため、リストアした新規データベースでは、リストア前にtemplate1に対して行った変更は反映されません。databaseはなく、変更点のみになっています。そのため、リストアした新規データベースでは、リストア前にtemplate1に対して行った変更はそのままで、さらに、バックアップ元で行った変更が行われます。よって、拡張コマンドなどはそのまま利用できます。#11に行ってきました。人気ブログランキング人気ブログランキングへはてなブログをはじめよう!kei0425tanさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。