2013/12/11

ExcelでpostgreSqlに接続しsqlを利用

手順のオボエガキ

PostgreSQLのODBCドライバをインストール
 OS(32bit) Excel(32bit)
 32bitのPostgreSQLのODBCドライバをダウンロードしインストール

 OS(64bit) Excel(64bit)
 64bitのPostgreSQLのODBCドライバをダウンロードしインストール

 OS(64bit) Excel(32bit)
 32bitのPostgreSQLのODBCドライバをダウンロードしインストール
 管理者権限でコマンドプロンプトを起動
 C:\Windows\SysWOW64\odbcad32.exe を叩き起動。
 32bitのODBCドライバを追加する。 

Excelでの設定
 データTAB→その他のデータソース→データ接続ウイザード
 →ODBC DSN→PostgreSQLのデータソースを選択

 適宜SQLを編集し、指定のセルにクエリ結果を表示させる。

以上

ODBC DSNで接続環境を作らないと不安定な接続となったので、
この方法を取る事。

2013/08/02

windows7 シンボリックリンク


Linuxで運用中のプログラムをwindows7で走らせることになった。

内部構成でシンボリックリンクを使っていたので、
同じものを配置するか~、メンテナンス性悪いな~と思っていたら、
windowsVista以降は何とシンボリックリンクが使えるらしい。
これは助かるので、忘れ無いように残す。


コマンドラインでのみ作成可能なため、コマンドプロンプトを管理者権限で起動

◆ファイルのシンボリックリンクを作成
mklink <シンボリックリンクの名前> <リンク先パス>
◆ディレクトリのシンボリックリンクを作成
mklink /d <シンボリックリンクの名前> <リンク先パス>

2013/07/23

grep 指定ディレクトリ内のファイルの中に入っている単語の検索

追記あり

grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ

option

-i 大文字・小文字の区別をなくす。
-r サブディレクトリ以下も再帰的に検索する。
-n パターンに一致した行のファイル内での行番号を表示する。
-e 検索条件を指定 -e "内容" のセットで使う。

その他option
-w 指定したパターンを単語として含む行を抜き出す。
-c マッチした総行数を表示
--include='*.拡張子' 指定した拡張子を含む
--exclude='*.拡張子' 指定した拡張子を除く


応用編
find | xargs grep -n [pattern]
 
入力したパターンをカレントディレクトリ以下で検索してくれる。
最初の 
grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ
ほぼ同じ。


今更だけど、option -e "" を忘れて
余計な時間が掛かったので、残す。 

2013/07/05

findコマンド 3日前のファイルを舐めて消して、バックアップを取る

シェルスクリプトを作成

#!/bin/sh
#バックアップ シェルスクリプト
#バックアップフォルダ名は、YYYY-MM-DD-HHMMとする。
#例) 2012-01-01-0100
#crontabと連携し、日数を指定する
#2日分持つ
#ほんとはコピーとデリートのシェルスクリプトを分けた方がいい。


echo "File backup start at `date`"
days=2
 

# ○日前以前にアクセスされたファイルを消す。
echo "Old backup ($days days passed) delete"
find [targetFile] -atime +$days -print -exec rm -fR {} \;

# find [検索するディレクトリ] (option) 
# -atime (+/-)n 最後にアクセスされたのが
#  n日前のファイル・ディレクトリを検索(+n:n日以上、-n:n日以下)
# 今回は -mtime +$days としているので 設定日数変更可能。
# -print     検索結果の標準出力
# -fprint [file name]     検索結果を指定したファイルに書き出す
# -exec [command] {} \;     検索結果をコマンドに引き渡して実行


#ディレクトリレベルで個別設定し新規作成が必要な場合使用
#fdir="作成するディレクトリのフルパス"
#if [ ! -e $fdir ]
#then
#    echo "create backup directory $fdir"
#    mkdir $fdir
#fi

#任意のディレクトリに 2012-01-01-0100 のディレクトリを作成する。
dName=[バックアップ先のディレクトリフルパス]`date '+%Y-%m-%d-%H%M'`

echo "Copying to the BackupFile"
#バックアップ元のディレクトリを指定
#個別で指定する場合は、複数行記述する。

cp -R [バックアップ元ディレクトリフルパス] $dName

echo "DB backup end   at `date`"


2013/06/26

php WEBシステム クエリの結果に行数を反映させたい

クエリを投げて、複数行の結果がかえってくるような検索プログラムに、

htmlで表を使って表示させているが、その際にsequence numberを表示させたいと要望があったので、

一番簡単な方法を掲載。

while ($col = pg_fetch_array($rst)) {
$seq +=1;

whileが終わるまで、seqに+1づつしてくれます。

 

##PHPの内容抜粋

$body .= "<TABLE border='1'>
 <TR>
              <TH><font size=2>seq</font></TH>
              <TH><font size=2>内容</font></TH>
</TR>";

while ($col = pg_fetch_array($rst)) {
$seq +=1;
     $body .= "<TR>" .
                "<TD><font size=2>$seq</font></TD>" .
                "<TD><font size=2>$col[内容のカラム名]</font></TD>" .
                "</TR>";

 

$body .= "</TABLE>";

 

 
こんな感じで使うようですね。

2013/06/24

postgresql 他の拠点(ホスト)からのアクセスを許可する設定

postgresの

/usr/local/pgsql/data/postgresql.conf を修正

listen_addresses = '*'
コメントになっている場合は、コメントを消す(#を取る)

接続ホストの制限をしている設定ファイル
/usr/local/pgsql/data/pg_hba.conf を修正

末尾に新しい拠点(ホスト)を記載。
host    all         all         192.168.XXX.0/24       password
 
補足
サブネットマスクは忘れず記載。 
passwordで md5ベースのパスワード
md5は総当たりでやられるらしく、
SHA-2とかのほうがセキュアらしいが、
その辺はルーターで穴を塞いでいるので、
ローカルレベルのパスワード定義で十分。
 
# /etc/rc.d/init.d/postgresql restart
でpostgresqlを再起動して、設定を有効にする。
 

2013/03/21

CentOs6.0 crontab

crontab -e でcronデーモンを登録しようとしたが、上手くいかない。
rootで/var/spool/cronの直下のユーザ名ファイルに直接書き込んだ。
これでも、良いようだ。

2013/03/18

CentOS6.0以降のcrontab設定

Logwatchをrpmでインストールして 、メールを携帯飛ばして状態管理をしており、
CentOS6.0のマシンからも、メールを飛ばすようした際のオボエガキ。
CentOS6.0以降のcrontabはrootでも定義されていない。
 crontabのdailyを7時半に定義したところ、 
3時半と、指定した時間2回送られてくるようになった
All about linuxさん に解説があったので、残す。
何やら、anacron (cronie-anacron)によって、ランダム化をし、
スクリプトシェルが重なったりして実行できない等の問題を解決しているようだ。
/etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
 
赤字の 1 (左端) が実行周期 (日時実行=1) で、
次の数字 5 は、実行開始タイミングになってから、5 分間の遅延を入れる指定
実行開始する時間帯は START_HOURS_RANGEで制御され、
3-22 とは、3時から22時までの範囲 (3:00 ≦ t < 22:00) を指定
ランダム化の幅はRANDOM_DELAY で制御され、
45 とは 0~45 分の範囲 (乱数計算の実装上、正確には 44 分まで) 
でランダムに遅延を行うことを指定している。
 
とのこと。詳しくは、manにて
起動時間帯が、3-22時の場合は、3:05~3:50に(正確には3:06となるらしい)起動することになる。
  
7時半頃飛んで来ればいいので、
START_HOURS_RANGE=7-22
変更。
これで、7時前半となる場合は、
1       5       cron.daily              nice run-parts /etc/cron.daily
 5を30とかにすれば、いいはず。

cronie-noanacronというパッケージをインストールすると、ランダム化されないそうだ。
パッケージの依存関係のため、事前に cronie-noanacron をインストールし、
その後に cronie-anacron を削除するという手順を踏む。

# yum install cronie-noanacron
..略..
Installed:
  cronie-noanacron.x86_64 0:1.4.4-7.el6
Complete!

# rpm -e cronie-anacron
 
/etc/cron.d/dailyjobsというものが生成され、こいつに、見慣れたcromtabを指定すればよい。
 
中身 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly  

cronie-anacron パッケージを削除しないと有効化されないようにガードされているそうだ。

cron.weekly および cron.monthlyも同様。