shiden.com



shiden.com blog


2009年2月アーカイブ

PostgreSQLで大量データを投入する

PostgreSQLで大量データを投入。やり方のメモ。

まずはPL/pgSQLを使用可能にする。 こいつはDBの設定になるので初回だけシェルで次のコマンドを投入。

> createlang plpgsql <必要ならスキーマ名>

で,PLpg/SQLを使用可能にしたら,データ投入用のスクリプトを書く。 次のような感じでループで回すものを書けばよい。

DROP FUNCTION FUNC();
CREATE FUNCTION FUNC(NUM INTEGER) RETURNS INTEGER AS '
DECLARE CNT INTEGER;
DECLARE SQL TEXT;
BEGIN
    CNT := 0;
    WHILE CNT < NUM LOOP
        SQL := ''<<INSERT INTO ...>>'';
        EXECUTE SQL;
        CNT := CNT + 1;
    END LOOP;
    RETURN CNT;
END;
' LANGUAGE 'plpgsql';
SELECT FUNC(1000000);

見ての通りいちいちストアド登録して実行する。 ストアド中に書くSQLはシングルクオートのエスケープが......といろいろ手間。

まぁ,ともかくできたらpsql等のフロントエンドで実行してやればよい。

ちなみに余談だが作ったデータをループで削除する場合はこんな感じ。

CREATE FUNCTION SHION.F_WORK() RETURNS INTEGER AS '
DECLARE CNT INTEGER;
DECLARE ENTRY RECORD;
DECLARE SQL TEXT;

BEGIN
    CNT := 0;
    FOR ENTRY IN <<SELECT ..>> LOOP
        SQL := <<''DELETE ..''>>;
        EXECUTE SQL;
        CNT := CNT + 1;
    END LOOP;
    RETURN CNT;
END;
' LANGUAGE 'plpgsql';
SELECT SHION.F_WORK();

以上まずはメモ。あとでまともに書くこと。


追記
4/10 PLpg/SQLをPL/pgSQLに誤記を修正。

wgetの代わり

Mac OS Xにwgetないかなぁ,と調べていたらcurl(/usr/bin/curl)というコマンドがあることが判明。 これを使えばわざわざwgetをビルド/インストールする必要ないじゃん。 使い方はhelpを見れば書いてあるけど,wgetとたいして変わらない。

ちなみに,curlというとリッチクライアントのcurlを思い出すけど,こちらは"Client for URL"という意味。 "カール"ではなく"シー,ユーアールエル"と呼ぶらしい。

風邪(NOTインフルエンザ)

昨日からノドが痛いので風邪だろうかと思いつつ出社したら,昼頃から体調不良に。 熱が出だして,咳鼻水が止まらない。 加えて全身が筋肉痛みたいな痛み。 仕事を抱えていたが今日中に病院に行きたい。 というわけで,かかりつけの病院の開院時間から逆算して定時(17時)ぐらいでやむを得ず帰る。

自宅近くの医者で診察してもらったところ風邪+花粉症という結果だった。 最近職場にインフルエンザが流行っているので聞いてみたところ,そうではないという回答。 会社を休む大義名分(?)が立ちにくくなったのが残念と思いつつも,病気はしないに超したことはないので,よかったとも思う。

薬を処方してもらって帰宅。 処方してもらった薬は,次の通り。

  • アレロック錠 - 対花粉症
  • ロキソニン錠 - 対風邪。痛みへの対処
  • イサロン錠 - 対風邪。ロキソニンの副作用対策
  • クラリス錠 - 対風邪。治療薬

最近は薬を処方してもらうときにどういう効果があるか説明してくれるのでわかりやすくて良いと思う。 昔は薬の説明をまともに受けたことがなかったような......。

ひとまずは薬を飲んで安静に,と。

バッグのひび割れ

引っ越してから初めて一日家に居た日になった (近所のスーパーへ買い物に行ったけど)。
久しぶりに一日家でのんびりの日なのでたまには手持ちの革製品(鞄と靴)をメンテしてたら......

orz

バ,バッグにひびが......。

今更あわてても無駄なのは分かっているけど,あわてて革用クリームを塗ってごまかしに走る。とはいえ一度ひびが入ってしまうとできることはたかが知れている。 忙しくて3ヶ月ぐらいメンテナンスできていない状態で,冬の低温乾燥でやられたか。

まだ買って1年も経っていないのに。 あぁー。

090201_Bag.jpg
こんな感じにバッグのひびが......

(2/14追記)

後々よく見たらヒビではなくシワでした。まぁorzに変わりはないですけど......。

ipconfigでエラー

以前,嘘800を書いたので修正を......。

ipconfigを実行すると次のようなエラーが出るようになった。 出るのは無線LAN使用時で,有線なら問題なく表示される。

>ipconfig

Windows IP Configuration

An internal error occurred: システムに接続されたデバイスが機能していません。

Please contact Microsoft Product Support Services for further help.

Additional information: Unknown media status code.

googleで調べてみたらThinkPadでたまに(?)見られる現象で,TCP/IPのメディア検出機能に関係しているらしい。 こいつを無効にすると直るらしい。 変更はレジストリの編集で,次の値を追加すればよい。

  キー名 : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
  
  値 : DisableDHCPMediaSense
  データの種類 : REG_DWORD - Boolean
  値のデータ範囲 : 0, 1 (False, True)、デフォルト値 : 0 (False)

これを1の値で追加(特に再起動はいらない)。 追加後に,再度ipconfigを実行したらめでたくパラメータが表示されるようになった。

最後に,参考として本件のMicrosoftのナレッジベースを。
http://support.microsoft.com/kb/239924/ja