PostgreSQLメモ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*PostgreSQLとは [#b2c9bc76]
-[[PostgreSQL: The world's most advanced open source data...
-[[NPO法人 日本PostgreSQLユーザ会>http://www.postgresql.j...
*文字列置換をする方法 [#d8504073]
-replace関数を使う
replace(original, needle, replace)
-original の中から needle を見つけ出し, replace に置き換...
-何故か,こういうときは例がneedleなんだよな.
*日付のフォーマットを変更 [#ife07176]
-to_char関数を使う
to_char(date, 'YYYY/MM/DD');
to_char(time, 'HH:MI:SS');
-to_charを使えばepoch timeを日付に戻せる
to_char('1970-01-01'::date + (unixtime || 's')::interval...
-|| 's')::intervalがミソ.1970-01-01 00:00がUNIXtime0秒な...
-参考:[[PostgreSQLでUNIXTIMEを使うときのTIPS>http://blog...
*日付時刻関数のextract [#c137e702]
-以下で,時刻,日付,タイムスタンプ型から特定の部分だけ引...
extract(''field'' from ''column'')
-以下で「時」の部分だけ引き出せる
extract(hour from timestamp)
-以下で年数だけ引き出せる
extract(year from date)
-以下''field''に使えるフォーマット一覧
--century (世紀)
--day (日)
--decade (十年)
--dow (曜日)
--doy (通算日数)
--epoch
--hour (時)
--microseconds (マイクロ秒)
--millennium (ミレニアム)
--milliseconds (ミリ秒)
--minute (分)
--month (月)
--quarter (四半期)
--second (秒)
--timezone_hour
--timezone_minute
--week (週)
--year (年)
-あと,date_truncも便利
-参照:[[日付/時刻関数と演算子>http://www.postgresql.jp/do...
*文字列関数 [#a816d2d9]
-length:文字列の文字数を返す
-char_length:文字列の文字数を返す(lengthと等価)
-octet_length:文字列のバイト数を返す
-bit_length:文字列のビット数を返す
-ただし,EUC文字列で半角カナは2バイト扱いっぽい.
-参考:[[ポストグレス文字列メモ(Hishidama's PostgreSQL St...
*大文字小文字を区別せずに検索する [#cdce535e]
-以下のクエリ文では'Apple'にしかヒットしない
select text from note where text ~ 'Apple';
-'Apple'も'APPLE'も'ApPlE'にもヒットさせたい場合は,以下...
select text from note where lower(text) ~ 'apple';
-ただ,PostgreSQLには ILIKE という句が存在するので,そっ...
select text from note where text ILIKE 'apple';
-参考:[[ILIKE - 条件検索で大文字小文字を区別させない>http...
-参考:[[大文字/小文字の区別しないで検索したい場合 - Oracl...
ジャンル[[:PostgreSQL]]
*PostgreSQLが容量超過した。 [#off3e7dd]
-契約してるPostgreSQL容量を超過したので、データベースのサ...
-その時の記録
SELECT relname, reltuples as rows, (relpages * 8192) as ...
-pg_class という特殊テーブルから情報を抽出する
-relpagesが8192バイトごとの情報なので、バイト数に変換する...
=> SELECT relname, reltuples as rows, (relpages * 8192) ...
relname | rows | bytes
---------------------------------+--------+-----------
hoge_history | 534201 | 157196288
access_history | 44502 | 14344192
user_access | 36037 | 9109504
user_info | 11368 | 4456448
(中略)
-削除にはdeleteコマンドを使う
=> DELETE FROM hoge_history;
DELETE 535056
-しかし、これだけでは見た目の情報が減らない
=> DELETE FROM hoge_history;
DELETE 535056
=> SELECT relname, reltuples as rows, (relpages * 8192) ...
relname | rows | bytes
---------------------------------+--------+-----------
hoge_history | 534201 | 157196288
(中略)
-完全に削除するためにはVACUUMコマンドを使う¬e{vacuum-c...
=> VACUUM FULL hoge_history ;
VACUUM
=> SELECT relname, reltuples as rows, (relpages * 8192) ...
relname | rows | bytes
--------------+------+-------
hoge_history | 0 | 0
(1 row)
-参考:[[PostgreSQL :: テーブルのサイズ(物理容量)とレコー...
終了行:
#contents
*PostgreSQLとは [#b2c9bc76]
-[[PostgreSQL: The world's most advanced open source data...
-[[NPO法人 日本PostgreSQLユーザ会>http://www.postgresql.j...
*文字列置換をする方法 [#d8504073]
-replace関数を使う
replace(original, needle, replace)
-original の中から needle を見つけ出し, replace に置き換...
-何故か,こういうときは例がneedleなんだよな.
*日付のフォーマットを変更 [#ife07176]
-to_char関数を使う
to_char(date, 'YYYY/MM/DD');
to_char(time, 'HH:MI:SS');
-to_charを使えばepoch timeを日付に戻せる
to_char('1970-01-01'::date + (unixtime || 's')::interval...
-|| 's')::intervalがミソ.1970-01-01 00:00がUNIXtime0秒な...
-参考:[[PostgreSQLでUNIXTIMEを使うときのTIPS>http://blog...
*日付時刻関数のextract [#c137e702]
-以下で,時刻,日付,タイムスタンプ型から特定の部分だけ引...
extract(''field'' from ''column'')
-以下で「時」の部分だけ引き出せる
extract(hour from timestamp)
-以下で年数だけ引き出せる
extract(year from date)
-以下''field''に使えるフォーマット一覧
--century (世紀)
--day (日)
--decade (十年)
--dow (曜日)
--doy (通算日数)
--epoch
--hour (時)
--microseconds (マイクロ秒)
--millennium (ミレニアム)
--milliseconds (ミリ秒)
--minute (分)
--month (月)
--quarter (四半期)
--second (秒)
--timezone_hour
--timezone_minute
--week (週)
--year (年)
-あと,date_truncも便利
-参照:[[日付/時刻関数と演算子>http://www.postgresql.jp/do...
*文字列関数 [#a816d2d9]
-length:文字列の文字数を返す
-char_length:文字列の文字数を返す(lengthと等価)
-octet_length:文字列のバイト数を返す
-bit_length:文字列のビット数を返す
-ただし,EUC文字列で半角カナは2バイト扱いっぽい.
-参考:[[ポストグレス文字列メモ(Hishidama's PostgreSQL St...
*大文字小文字を区別せずに検索する [#cdce535e]
-以下のクエリ文では'Apple'にしかヒットしない
select text from note where text ~ 'Apple';
-'Apple'も'APPLE'も'ApPlE'にもヒットさせたい場合は,以下...
select text from note where lower(text) ~ 'apple';
-ただ,PostgreSQLには ILIKE という句が存在するので,そっ...
select text from note where text ILIKE 'apple';
-参考:[[ILIKE - 条件検索で大文字小文字を区別させない>http...
-参考:[[大文字/小文字の区別しないで検索したい場合 - Oracl...
ジャンル[[:PostgreSQL]]
*PostgreSQLが容量超過した。 [#off3e7dd]
-契約してるPostgreSQL容量を超過したので、データベースのサ...
-その時の記録
SELECT relname, reltuples as rows, (relpages * 8192) as ...
-pg_class という特殊テーブルから情報を抽出する
-relpagesが8192バイトごとの情報なので、バイト数に変換する...
=> SELECT relname, reltuples as rows, (relpages * 8192) ...
relname | rows | bytes
---------------------------------+--------+-----------
hoge_history | 534201 | 157196288
access_history | 44502 | 14344192
user_access | 36037 | 9109504
user_info | 11368 | 4456448
(中略)
-削除にはdeleteコマンドを使う
=> DELETE FROM hoge_history;
DELETE 535056
-しかし、これだけでは見た目の情報が減らない
=> DELETE FROM hoge_history;
DELETE 535056
=> SELECT relname, reltuples as rows, (relpages * 8192) ...
relname | rows | bytes
---------------------------------+--------+-----------
hoge_history | 534201 | 157196288
(中略)
-完全に削除するためにはVACUUMコマンドを使う¬e{vacuum-c...
=> VACUUM FULL hoge_history ;
VACUUM
=> SELECT relname, reltuples as rows, (relpages * 8192) ...
relname | rows | bytes
--------------+------+-------
hoge_history | 0 | 0
(1 row)
-参考:[[PostgreSQL :: テーブルのサイズ(物理容量)とレコー...
ページ名: