2通りあるようです。 1 DBログイン後SQLファイルを実行 $ psql -U user_name -d db_name (-h ホスト名) にてDBにログイン $ postgres=> \i ../dump_in.sql 2 DBに一時的にログインしSQLファイルを実行 $ psql -f ../dump_in.sql -U user_name -d db_name (-h ホスト名) ちなみにどちらの方法でもDBのユーザに権限がない場合、 「許可がありません」の警告が出て実行できません。
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧
たまに必要に駆られるのが、2つのテーブルを比較して、1つのテーブルには存在するが、もう一方のテーブルにはないレコードを抽出するというもの。 いくつか方法がありますが、今回は主な2つをご紹介。特に②の方法が汎用的で、原理を覚えておくと、様々な場面で応用がききます。 ①差集合演算を使う・・・簡単ですが、比較するテーブルの列数、型を合わせる必要あり。 ②SQLのみで抽出・・・汎用的に使えます。一度原理を覚えると応用がききます。 はじめにデータを用意 では、さっそくやってみます。比較するテーブルは、この記事で用意した【売上テーブル】と【顧客テーブル】を使うことにしましょう。 各々のテーブルには以下のようにデータが入っていることにします。 ①差集合演算を使う 各DBには演算のための組み込み関数があり、差分を演算するものもあります。 PostgreSQL、Oracle、DB2・・・minus MySQ
PostgreSQLのディクショナリテーブルからコメントを取得する PostgreSQLからメタ情報を取得する方法は2つあります。 1. pg_catalogからデータを取得する 2. information_schemaからデータを取得する 圧倒的に簡単なのは、information_schemaの方です。と言うか、pg_catalogにあるテーブルの構造が難解すぎるのです。 私が、今回悩んでいた問題・・・。それは、テーブルやカラムのコメントを取得する方法が解らなかったことです。 information_schemaには残念ながら、コメント情報はありません。したがって、pg_catalogから情報を取得する他ないわけです。 ちなみに、pg_catalogの情報は、以下のサイトに転がっています。 http://www.postgresql.jp/document/current/html/
PostgreSQLにはランダムな数値を取り出すRANDOM関数があり、これを使うことにより、テーブルからランダムにデータを取り出すことができる。 RANDOM関数は以下のように0以上1未満の値をランダムで返す。 > SELECT RANDOM(); random ------------------- 0.322386509888985 (1 row) > SELECT RANDOM(); random ------------------- 0.677151894977853 (1 row) これを使ってランダムにデータを取り出す。 例えば、以下のデータがあるとする。 > SELECT * FROM book; id | title ----+---------------------- 1 | 赤ずきん 2 | ブレーメンの音楽隊 3 | 白雪姫 4 | シンデレラ 5 | ヘンゼル
WordPressでSQLのエラー出力を(自動で)行う方法を調べていました。ざっと以下のような感じになっていました。 すべてのSQLはwpdb#query()を通る wpdb#query()でエラーが発生すると、wpdb#print_error()が呼ばれる 条件によって3種類の出力がある (※WordPress MU 2.8.4a) ログファイル出力その1 出力条件 $wpdbのshow_errorsプロパティをtrueにしておく 定数'ERRORLOGFILE'でログファイルを定義しておく 画面出力+実行中断 出力条件 $wpdbのshow_errorsプロパティをtrueにしておく 定数'DIEONDBERROR'をtrueで定義しておく ログファイル出力その2 出力条件 PHPの設定'error_log'にファイルを定義しておく こちらはエラー内容だけでなくてエラー時のSQLも出力
下記のようなシステムでパフォーマンスが良さげな SQLite を使用予定ですが、もっと速いものが無いか確認のため他のデータベースのパフォーマンスを計測してみました。SQL 利用前提ですが、NoSQL が圧倒的な性能を出す場合は検討する必要があるので KVS も確認しました。 データ件数は 1 億件程度、JDBC SQL 利用可能 INSERT、UPDATE はバッチ SELECT は主キーアクセス性能を重視 将来スケールアウトのための分散はありえるが、スタンドアロンで遅いのはだめ データベースのパフォーマンス比較 計測したデータベース データベース名 タイプ 形態 評判 計測についての備考 SQLite RDB 組み込み ※2 おもちゃ、Android標準 JDBC操作 ※1 H2 RDB 組み込み ※2 組み込み最速 JDBC操作 ※1 Derby RDB 組み込み ※2 Java標準で
SAK 開発言語資料 VB プログラミング言語資料 VB 入門編 VB 基礎編 VB ビジュアル編 VB テクニック編 VB RDO + SQL 応用編 VB ADO + SQL 応用編 VB oo4o + SQL 応用編 VB 環境編 ASP VB Script プログラミング言語資料 ASP VB Script 基礎編 ASP VB Script ADO + SQL 応用編 ASP VB Script oo4o + SQL 応用編 ASP VB Script 基礎実地編 JAVA Servlet、JSP プログラミング言語資料 JAVA Servlet、JSP 基礎編 JAVA Servlet、JSP + PostgreSQL 編 JAVA Servlet、JSP + Oracle9i 編 SQL プログラミング言語資料 SQL 基礎編 SQL 基礎実地編 SQL チューニング編 Or
A5:SQL Mk-2は複雑化するデータベース開発を支援するために開発されたフリーのSQL開発ツールです。 高機能かつ軽量で、使い方が分かりやすいことを目標に開発されています。 SQLを実行したり、テーブルを編集するほかに、SQLの実行計画を取得したり、ER図を作成したりすることが出来ます。 特徴・機能 OCI接続・直接接続・ADOまたはODBCを介したDBへの接続 Oracle DatabaseはOCI経由の接続・直接接続が出来ます。 PostgreSQLとMySQLは直接接続が出来ます。 Microsoft SQL Serverは、OLE DBプロバイダを直接呼び出した接続ができます。 IBM DB2は、ODBCドライバを直接呼び出した接続ができます。 その他のデータベースは、ADOまたはODBCを利用して接続します。 Oracle, PostgreSQL, MySQLは、A5:SQL
NoSQLミドルウェアの特徴をもう少し細かく挙げてみます。分量の都合もあり個別には触れませんが、それぞれのNoSQLミドルウェアで差別化部分に関してはかなり詳細に説明がされていますので、ぜひそちらを参照してみてください。 高速に動作する リレーションモデルではないデータモデル スケールアウト型アーキテクチャ コモディティサーバによって構築される スキーマフリー SPOF(単一故障点)を持たない 自動的に複数台へレプリケーションする イベンチュアルコンシステンシまたは一貫性の選択が可能 SQLのような強力なクエリ言語を持たず、シンプルな問い合わせしかできない Cassandraとは何か NoSQLミドルウェアの筆頭といえばGoogle BigTableやAmazon Dynamoですが、オープンソースの世界でもいろいろなものが出てきています。その中でも最近特に注目を集めているのが、Apach
SQLのチューニングをする際に、チェックする観点を掲載します。 最低限、これだけはチェックして欲しい内容です。 これらをチェックするには、人・工数・決断を必要とします。 開発メンバーの士気は下がり、場合によってはプライドすらも 傷つけます。 時間が無いのに、新たな作業を言い渡される訳ですから・・・ だ・か・ら、納期ギリギリでは「つらい」のです。 ※しかし、港は無表情で作業の依頼を指示します。 (まぁ、殴られたり、刺されたりした事は無いので・・・) どうぞ参考にして下さい。 【チェック内容】 01.サブクエリを引数に取る場合、IN述語よりもEXISTS述語を 使っているか SELECT name FROM Personnel WHERE birthday IN (SELECT birthday FROM Celebrities); ▼ SELECT P.name FROM Personnel
MySQL の勉強をせずにフレームワーク等で SQL を書かずに Web サイトを構築していました。データ数も2万件程度でしたので、そこまで困ることはありませんでしたが、今回100万弱の商品データを扱う機会ができたので、MySQL のチューニングや発行する SQL について見直す機会がありました。 この記事では MySQL を高速化するのに行った対策など勉強したものを自分用にメモしておきました。 条件式で比較するカラムにインデックスを使用して高速化 商品コードで存在しない商品を見つけて、商品をDBに登録するという処理を行っている場合、4万件超えたころから処理に2秒以上かかるようになってきます。12万件超えた頃には10秒程度かかるようになってしまいましたが、商品コードのフィールドに対してカラムインデックスを貼ることで0.2秒に短縮することができました。 MySQL のリファレンスにも以下のよ
あまりに気になったので「山本大@クロノスの日記」にチャチャを入れてみる。 http://d.hatena.ne.jp/iad_otomamay/20110808/1312805917 http://d.hatena.ne.jp/iad_otomamay/20100906/1283786846 まあ、政治的にはどのみち勝てなかったでしょう。私も同じ条件であれば、一応は説得を試みるけれど返り討ちに遭うと思う。いずれにしても結果は同じですが、教えられたと思っているなら間違いです。 結論はいつものとおり「下手糞が居るから」に行き着くのですが……。 JOIN禁止について 「JOIN禁止」が正しい場合がある。 それはJOINされるデータがアプリケーションサーバにキャッシュされていて、その一貫性が何らかの形で保証されている場合。 そもそも、せっかくキャッシュしているのに、それを使わずにJOINして取り直
「知らないとわからない」は「推測しにくい」って意味で。 1、DISSTINCT GROUP BY *の代わりに GROUP BYは暗黙のソートがあるので遅いので、重複削除だけならこっち推奨 2、ORDER BY RANDOM() ランダムな順番でほしいとき PostgreSQLは不可?SQLiteはいけた 3、ORDER BY ID=10 DESC, ID 10,1,2,3,4...って並ぶ 4、HAVING GROUP BYを使わず、HAVING単独でも使える fromここ 理解すれば便利だけど、使いどころは難しいかも 5、UNION ALL UNIONは重複を削除するので暗黙のソートがある(遅い) 重複していいならALLが早い 6、ANY INの演算子を指定できる版 7、REGEXP 文字列の正規表現一致。MySQL専用 ちなみにPostgreSQLでは「~」演算子 8、CASE WH
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く