今回は、Silverの「S2 運用管理 - S2.4 バックアップ方法」からの出題です。
標準SQLで定義されており、PostgreSQLをはじめとして、多くのRDBMSで利用できる。
psqlの\copyメタコマンドは、内部的にSQLのCOPY文を実行する。
COPY文を実行するには、データベースの管理者権限が必ず必要となる。
デフォルトではCSV(カンマ区切り)形式のファイルを入出力する。
pg_dumpコマンドで作成したテキスト形式のバックアップからリストアするとき、デフォルトではCOPY文が利用される。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2014年11月19日
COPYは標準SQLにはない、PostgreSQLの独自拡張機能で、テーブルの内容をタブ区切りやカンマ区切りのテキストファイルに出力したり、あるいはテキストファイルを読み込んでテーブルにコピーすることができます。デフォルトではタブ区切りファイルを入出力します。
COPYの入出力先としてファイル名を指定する場合、これはデータベースサーバ上のファイルであり、実行には管理者権限が必要になりますが、STDINあるいはSTDOUTを指定した場合は、一般ユーザの権限でも実行できます。
psqlの\copyメタコマンドは、クライアントマシン上のファイルとCOPYコマンドをつなぐインタフェースで、内部的にはCOPYコマンドが実行されます。
pg_dumpコマンドの出力ファイルをテキストエディタで開いてみるとわかりますが、テーブルを定義するCREATE TABLEの後に、COPY FROM STDINでテーブルのデータが記述されます。すなわち、リストアするときにはCOPY文が実行されます。なお、pg_dumpコマンド実行時のオプションで--insertsを指定すると、COPY文の代わりにINSERT文が使われます。例えば、PostgreSQL以外のRDBMSでリストアしたい時に有効でしょう。
従って、正解はBとEです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.