OracleでのTRUC関数と類似したものにPostgreSQLではDATE_TRUNC関数があります。
DATE_TRUNC関数は「DATE_TRUNC([‘精度’],[列名])」形式で指定する事で取得できます。
使用例
サンプルテーブル「goods」
クエリー(SQL)
サンプルテーブル「goods」のtype_code=’102’のadd_dateをサンプルとしてDATE_TRUNC関数で抽出してみます。
|
SELECT DATE_TRUNC('year',add_date), -- 精度に'year' を指定し年で切り捨て DATE_TRUNC('month',add_date), -- 精度に'month' を指定し月で切り捨て DATE_TRUNC('day',add_date), -- 精度に'day' を指定し日で切り捨て DATE_TRUNC('hour',add_date), -- 精度に'hour' を指定し時で切り捨て DATE_TRUNC('minute',add_date), -- 精度に'minute'を指定し分で切り捨て DATE_TRUNC('second',add_date) -- 精度に'second'を指定し秒で切り捨て FROM goods WHERE type_code = '102'; |
出力結果
PostgreSQLの大きな特徴として追記型のアーキテクチャであることです。このことによりデータが更新される度に使われないタプル(tuple)が蓄積されていきます。
PostgreSQLに必要な保守作業は、この使用されることのないタブルを解放し利用できる領域にすることが必須となっています。
この作業を行うのがVACUUMコマンドです。
VACUUMを実行するとデータベースのパフォーマンスを向上させることができます。
VACUUMには、VACUUM FULLと標準VACUUMがあります。
VACUUM FULLは、システムへの負荷が大きく作業に長時間を要します。
膨大な量のデータ削除を行った時や利用可能なディスク容量が急迫した等の緊急時以外は、VACUUM FULLは行うべきではありません。
標準VACUUMを定期的に行っていいれば、VACUUM FULLを実行する必要性が発生する頻度を低減させることができます。
また、なんとなくVACUUMを行うのではなく、pgAdminなどを使用してデッドタプル(不要領域)を確認してうえで実行することが重要です。
PostgreSQL8.1以降では、autovacuumが実装されていますのでメンテナンスにかかる負荷も低減されています。
PostgreSQL独自のSQLコマンドとしてCOPYコマンドが実装されています。
これはサーバ上にあるCSVファイルからある表に、一括してデータを流し込むこ操作を行うことの出来るコマンドとなっています。
コマンドは通常のSQLと同様にpsql上から発行できます。
表の全列にデータを流し込む場合には、以下の書式になります。
|
% COPY 表名 FROM 'CSVファイルのフルパス' WITH CSV; |
insert分などと同様に、表の一部の列にだけデータを流し込むことも可能です。
その場合のSQLの記述方法は以下となります。
|
% COPY 表名(列名1,列名2,…) FROM 'CSVファイルのフルパス' WITH CSV; |
また、サーバ側にCSVファイルがない場合、psqlの標準入力からCSV形式でデータを入力することも可能です。その場合には以下の書式となります。
|
% COPY 表名 FROM STDIN WITH CSV; % COPY 表名(列名1,列名2,…) FROM STDIN WITH CSV; |
PostgreSQLCOPYコマンドはデータ一括登録時時に便利なので覚えておくのも良いかもしれません。
PostgreSQLのバージョンは「9.1.14」の様に2つのピリオドに区切られた3つの数字で表記されています。
左から2つは、メジャーバージョンを表し、最後の1つはマイナーバージョンを表しています。
例えば、9.1.14なら、メジャーバージョンが9.1、マイナーバージョンが14となります。
メジャーバージョンアップは1年毎、マイナーバージョンアップは、年に3回~5回程度実施されます。
このバージョンをアップすることを維持管理と呼び、2015年1月27日現在で維持管理の対象となっているのは、9.4.0、9.3.5、9.2.9、9.1.14、9.0.18となります。
左端が8の8.4.22以前のものは、ダウンロードができます(available)が、維持管理の対象外(No longer supported)であり、これ以降はバージョンのアップは行われません。
維持管理対象外のバージョンは、「EOL’d releases」とも呼ばれています。EOLは「End-of-life」の略です。
マイナーバージョンアップは、バイナリ変更だけで対応できますが、メジャーバージョンアップでは、データファイルの移行の必要があるので、メジャーアップデート作業はアップデート計画に沿って、慎重に(シュミュレーション・予行演習など)行うことが大切となります。
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。