スポンサーリンク

PostgreSQL

Ruby on Railsで,DBへの全接続を強制的に切断したい (Webアプリから,sudo経由で任意のコマンドを実行可能にする方法)

データベースへの接続を「強制的に切断」するには,どうしたらよいか。環境は,Linux上で,Ruby on RailsからPostgreSQLにつないでいる場合を想定。 考えうる方式は3通り。 ActiveRecord側から,DB接続を切断する PostgreSQL側から,DB接続を切断する OS側…

Linux上で,巨大なサイズのダミーファイルを作成する方法

バッチのまとめTOPへ Linux上で,巨大なサイズのダミーファイルが欲しい場合がある。例えば,圧縮ソフトの圧縮率を比較したい場合など。 この場合,ダミーファイルの性質として,下記の点が求められる。 内容が,極端に「均質」過ぎてはいけない。(圧縮結果…

PREPARE文と,PL/pgSQL の入門  (PostgreSQLで「動的に」SQLを実行するために,プリペアド・クエリやストアドファンクションを定義しよう)

複数のINSERT文を「動的に」発行するには,どうしたらよいか? 例えば,都合のいいサンプルデータをDBに大量投入したいとか。その場合,INSERT文を大量に発行することになる。どうやって? (案1)SQLをExcelで大量生成 (案2)PREPARE文をExcelで大量生成…

インデックスを作成して,SQLの速度をチューニングする手順 (PostgreSQLで,EXPLAIN文とCREATE INDEX文によるパフォーマンス改善)

以下の5ステップで,適切なインデックスを作成し,SQLを高速化できる。 (1) パフォーマンスを改善すべきSQL(もしくはカラム)を特定 (1−1) ログを閲覧し,実行秒数の大きいものを抽出する。 (1−2) 統計テーブルを閲覧し,よく利用されるテーブ…

DBの「トランザクション分離レベル」が必要な理由  (PostgreSQLで,ファントム・リードを防止すべきサンプル事例)

データベースには,「トランザクション分離レベル」というものがある。 以下では,それが なぜ必要なのか? デフォルトのレベルでは,どうして駄目なのか? PostgreSQLでは,どうやってレベルを変更・確認するのか? などを取り上げる。 トランザクション分…

「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう

SQLの「相関サブクエリ」がわかれば・・・ 巨大なSQLが,迷わずに読めるようになる。 「関数」のような,便利なサブクエリを書けるようになる。 以下では, 「相関サブクエリ」とは何か? 普通のサブクエリ(非相関サブクエリ)やJOIN操作とは何が違うのか?…

バッチで,ODBC接続の設定を追加・更新・表示しよう(odbcconf.exeの使い方:PostgreSQLでの使用例)

バッチのまとめTOPへ コマンドプロンプトのバッチから,ODBC設定を 新規作成 更新 一覧表示 する方法。接続先のDBMSの例としては,PostgreSQLの場合を取り上げる。 GUIだと,DSNを追加するためには コントロールパネル→管理ツール→データソース(ODBC) のダ…

SQLで,テーブルに存在しない複数行のデータを取得する方法 (PostgreSQLの generate_series関数をマスターしよう)

PostgreSQLで,テーブルを使わずに,複数行のデータを取得する方法。 SQLの中で,大量の定数データを使う必要がある。(例えば,1ヶ月間の日付全部とか,1000までの素数全部とか) だが,それらのデータを,前もってどこかのテーブルに格納しておくことはで…

PostgreSQLのシステムテーブル入門 (暗記用のSQL集)

PostgreSQLで,システムテーブルを利用するための入門。 システムテーブルの使い方を覚えれば,自分が作ったテーブルの統計情報や,メタデータを取得する事ができる。DBそのものの理解も深まる。 (1)情報スキーマ(人間に理解しやすい。調べ物をするとき…

CSVをExcelファイルに変換するスクリプト (JScript/WSHで,カンマ区切りCSVファイルから.xlsを生成)

バッチのまとめTOPへ JScript/WSHで,CSVを.xlsファイルに変換するスクリプト。 実は,Excelには致命的なバグ(致命的な仕様)があり,CSVの扱いがひどい。 どれほど工夫しても,CSVをExcel上で開くと, 列がずれたり セルの表示形式を楽に制御できず,値が…

PostgreSQLのバッチを,パスワードを聞かれずに実行する方法 (psqlも設定ファイル編集も不要)

バッチのまとめTOPへ PostgreSQLをバッチで自動実行する方法。パスワード入力なし。 PostgreSQLをコマンドラインから利用するためには,通常はpsqlを経由する。psqlは実行時に必ずパスワードを聞かれるので,バッチによる自動運転は不可能。 技術的雑談-Post…