システム運用管理者の徒然日記

日々勉強、日々仲間に助けられ、何とか過ごしております。

日々勉強、日々仲間に助けられ、何とか過ごしております。

2019年04月

PostgreSQLでのカラム追加

今あるテーブルにカラムを追加するクエリは以下の通り。
追加する列については、既にNULLの行が存在してしまうため、NOT-NULLの制約条件は付与できません。

=# ALTER TABLE <テーブル名> ADD COLUMN <カラム名> <定義>;

上記の処理は、テーブルの最終カラムの次に追加され、カラム位置の指定はできません。
カラム位置を指定したい場合は、新しいテーブルを作成して旧テーブルのデータをinsertする方法で処理します。

--- 元テーブルをリネーム
ALTER TABLE <テーブル名> RENAME TO <変更後のテーブル名>;

--- 新規カラムを追加したテーブルを作成
CREATE TABLE <新テーブル名>
    ( <カラムA>    <定義>,
     <カラムB>    <定義>,
     <カラムC>    <定義>,
     :
    PRIMARY KEY ・・・
);

--- 元テーブルから新テーブルにデータを移行
INSERT INTO <新テーブル名>
    ( <カラムA>, <カラムB>, <カラムC>, ・・・)
SELECT <カラムA>, <カラムB>, <カラムC>, ・・・
FROM <変更後のテーブル名>;

--- 元テーブルを削除
DROP TABLE <変更後のテーブル名>;


以上。 

PostgreSQLで文字列置換して更新する方法

以下のupdate分で、カラムに格納されている一部の文字列が置換されます。
指定文字列の置換であるため、文字列の全置換えにはならないです。

=# update <テーブル名> set <カラム名> = replace(<カラム名>, '<置換前の文字列>', '<置換後の文字列>'); 


where句を指定しないと全行総舐めするため、行数が多い場合は必ずwhereで処理する範囲を指定してupdateかけてください。



以上。
 

Linuxで曜日から日付を指定する方法

シェルで週間データを指定する際に、処理が意図通りに出力されなかったため、備忘録。
指定日付を変数に格納すると、曜日がなくなるので意図通りに動かないのかな。。

以下のシェルを実行すると、結果が「2019/04/30」となり期待した値が出ません。
先週だけでなく、翌週の曜日を指定する "next <曜日>" も同様です。
※ 曜日を指定しない、"last week" や "next week" であれば動きます。

#!/bin/bash

VAR1="2019/04/30"
VAR2=`date -d ""${var1}" last sunday" +%Y/%m/%d`
echo $VAR2


なので、日付から、先週・翌週の曜日を指定するには、%w で曜日の数字を引っ張ってきてから、その数字を差し引く方法で回避します。
(下記は、処理実行日を基準に先週の日曜日を指定するスクリプト。日曜日に実施する場合は、0が返るので、7日前を指定。)
WD=`date +%w`
if [ "${WD}" == 0 ]; then
    WD=7
fi
Day1=`date -d "${WD} days ago" +%Y/%m/%d`
 

以上。

〈インターネット〉の次に来るもの 未来を決める12の法則

今後は、更にインターネットを通して体感することが増えていく。
サービスを作る・提供する立場において、以下の12個のキーワードの組み合わせを基にユーザーに刺さるサービスを考えて行く必要がある。




1. BECOMING(ビカミング)
  常に変化し、新しいものになっていく。
2. COGNIFYING(コグニファイング)
  一般化されていたものを知能化していく。
3. FLOWING(フローイング)
  無料でコピーされ、拡散されていく。
4. SCREENING(スクリーニング)
  あらゆるものが画面で見れ、視覚化されていく。
5. ACCESSING(アクセシング)
  所有せず、接続して利用していく。
6. SHARING(シェアリング)
  共有して価値を見出していく。
7. FILTERING(フィルタリング)
  膨大なデータ・情報を選別して、受益者に最適なものを提供していく。
8. REMIXING(リミクシング)
  既にあるものを再編集し、価値を見出していく。
9. INTERACTING(インタラクティング)
  あらゆるものが相互作用し、新たな価値を見出していく。
10. TRACKING(トラッキング)
  蓄積した過去データを追跡できるようにして、いつでも検索できるようにする。
11. QUESTIONING(クエスチョニング)
  不確かなものに対して質問し、未だ無いものを見つけていく。
12. BEGINNING(ビギニング)
  インターネットによってあらゆる人々や地域やデータが繋がっていくことで、新しい考え方がもたらされていく。
 


スポンサードリンク