ろばの穴・別館 Annex

アップル製品への熱い想い & PCガジェット全般のメモ

PSQL の文法:変数と「'」の使い方、日付データ演算 などのメモ 

備忘録です。

■ 環境

・OpenWrt 19.07.3
psql (PostgreSQL) 11.3

スクリプトの処理内容

PostgreSQLサーバに接続
・日付を入力すると、変数culture_dateに代入。
・usbtempテーブルから、その日付の8時のデータを取り出し、変数eight_temp
 usbtempテーブルから、その日付の12時のデータを取り出し、変数twelve_temp に代入。
・new_cultureテーブルに、上記3変数のデータと、org_cultureテーブルから取り出したデータを挿入。
・テーブルの最新レコードから30行をログファイルに書き出して終了。

■ コマンドファイル add-culture.sh の内容

#!/bin/sh
psql -h 192.168.168.1 -p 5432 -U UserName -d temp << EOF > /var/log/culture.log
\prompt culture_date(9999-99-99): culture_date
\echo :culture_date

select temp_moddata as eight_temp from usbtemp
 where temp_date >= to_timestamp(:'culture_date' || ' 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
 and temp_date < to_timestamp(:'culture_date' || ' 08:00:01', 'YYYY-MM-DD HH24:MI:SS');
\gset
\echo :eight_temp

select temp_moddata as twelve_temp from usbtemp 
 where temp_date >= to_timestamp(:'culture_date' || ' 12:00:00', 'YYYY-MM-DD HH24:MI:SS') 
 and temp_date < to_timestamp(:'culture_date' || ' 12:00:01', 'YYYY-MM-DD HH24:MI:SS'); 
\gset
\echo :twelve_temp

insert into new_culture(culture_date, culture_temp8, culture_temp12, culture_time,culture_temp, culture_hour)
 select :'culture_date' , :eight_temp, :twelve_temp, culture_time, culture_temp, culture_hour
 from org_culture where culture_date = :'culture_date' ;

select * from new_culture ORDER BY culture_date DESC LIMIT 30;
EOF

■ テーブル一覧

・培養新データ格納テーブル
CREATE TABLE new_culture(
 culture_date DATE NOT NULL DEFAULT CURRENT_DATE,
 culture_temp8 FLOAT NOT NULL, -- 8時の温度
 culture_temp12 FLOAT NOT NULL, -- 12時の温度
 culture_time TIME NOT NULL DEFAULT '08:00:00', -- 開始時刻
 culture_temp SMALLINT NOT NULL, -- 培養温度
 culture_hour SMALLINT NOT NULL, -- 培養時間);

・室温データ格納用デーブルCREATE TABLE usbtemp(
 temp_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 temp_rawdata FLOAT NOT NULL, 
 temp_moddata FLOAT , -- 補正後データ
 interval SMALLINT NOT NULL DEFAULT 1000, (msec単位));

・培養元データ格納テーブル
CREATE TABLE org_culture(
 culture_date DATE NOT NULL DEFAULT CURRENT_DATE,
 culture_time TIME NOT NULL DEFAULT '08:00:00', -- 開始時刻
 culture_temp SMALLINT NOT NULL, -- 培養温度
 culture_hour SMALLINT NOT NULL, -- 培養時間);

■ ひとりごと 「はてな記法はどこいった?」 > 「戻ってきた」>「ほっ」

設定 > 編集モード > はてな記法モード を選択