タグ付けされた質問 「postgresql」

PostgreSQLのすべてのバージョン。そのコンテキストが重要な場合は、postgresql-11などのバージョン固有のタグを追加します。

3
階層型フィールドの最高レベルを検索:CTEありとなし
注:この質問は、現在MySQLを使用していることを反映するように更新されました。これを行ったので、CTEをサポートするデータベースに切り替えるとどれほど簡単になるかを知りたいと思います。 主キーidと外部キーを持つ自己参照テーブルがありますparent_id。 +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | parent_id | int(11) | YES | | NULL | | | name | varchar(255) | YES | | NULL …


4
Mac OS Xでpsqlを実行する方法は?
ワンクリックインストーラーを使用して、Mac OS Xを搭載したコンピューターにPostgreSQLをインストールしました。次に、psqlコマンドを使用してPostgreSQLにアクセスしようとしましたが、使用できないようです。 私はこのメッセージを受け取ります: psql -bash: psql: command not found もっとインストールする必要がありますか?または、PostgreSQLをコンピューターで使用できるように構成するにはどうすればよいですか?

13
PostgreSQLがMacで実行されていない
エラー全体は次のとおりです。 psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません。サーバーはローカルで実行されており、Unixドメインソケット「/tmp/.s.PGSQL.5432」で接続を受け入れていますか? MacでHomebrewを使用してPostgresqlをセットアップするのは今回が2回目で、何が起こっているのかわかりません。以前は機能していました。ある時点で、混乱させるコマンドを入力したに違いありません。よく分かりません。これで、コマンドラインからSQLコマンドを入力するたびに、上記のメッセージが表示されます。サーバーが実行されているかどうかを確認するコマンドを実行しましたが、実行されていないようです。を使用してサーバーを起動しようとした場合 $ postgres -D / usr / local / pgsql / data 次のエラーが表示されます。 postgresはサーバー設定ファイル「/usr/local/pgsql/data/postgresql.conf」にアクセスできません:そのようなファイルまたはディレクトリはありません Homebrewを使用してPostgresqlをアンインストールして再インストールしましたが、問題は解決しません。私はこれをどのように機能させるかについて完全に迷っています。任意の助けをいただければ幸いです。
55 postgresql 

3
外部キーを含む行を挿入するにはどうすればよいですか?
PostgreSQL v9.1を使用します。次の表があります。 CREATE TABLE foo ( id BIGSERIAL NOT NULL UNIQUE PRIMARY KEY, type VARCHAR(60) NOT NULL UNIQUE ); CREATE TABLE bar ( id BIGSERIAL NOT NULL UNIQUE PRIMARY KEY, description VARCHAR(40) NOT NULL UNIQUE, foo_id BIGINT NOT NULL REFERENCES foo ON DELETE RESTRICT ); 最初のテーブルfooが次のように設定されているとします: INSERT INTO foo (type) …

6
「最新の対応する行」を効率的に取得するにはどうすればよいですか?
非常に一般的なクエリパターンがありますが、効率的なクエリを作成する方法がわかりません。別のテーブルの行の「後ではなく最新の日付」に対応するテーブルの行を検索したい。 inventoryたとえば、特定の日に保有する在庫を表すテーブルがあります。 date | good | quantity ------------------------------ 2013-08-09 | egg | 5 2013-08-09 | pear | 7 2013-08-02 | egg | 1 2013-08-02 | pear | 2 そして、「価格」と言うテーブルは、特定の日に財の価格を保持します date | good | price -------------------------- 2013-08-07 | egg | 120 2013-08-06 | pear | 200 2013-08-01 | egg | 110 …

7
PostgreSQLでデータベーススナップショットをすばやく作成/復元することは可能ですか?
まず、私はDBAやシステム管理者ではなく、開発者です。優しくしてください:) 私は、単一のユーザーアクションがデータベースの複雑な変更をトリガーするアプリケーションワークフローに取り組んでいます。いくつかのテーブルで数百のレコードを作成し、他のテーブルで数百のレコードを更新します。 )このアクションに触れます。複雑なため、別のテストを実行する前にすべての変更を手動で元に戻すのは非常に困難です。ほとんどの開発期間中、ワークフローの終わり近くに「ROLLBACK」ステートメントを挿入するだけで済みますが、変更のコミットが近づいたら、本物をテストする必要があります。 運用する運用データベースのローカルコピーがあります。私の場合、テスト間のダ​​ンプと復元は、すべての変更を取り消すスクリプトを書くよりも高速です。それは高速ですが、それでも私はかなり遅くなります(私のラップトップでの復元には約20分かかります)。データベースの現在の状態のスナップショットを保存して、すぐに復元する方法はありますか? システム上の唯一のユーザーであることが保証されており、ルートアクセス権があります。データベースダンプは、tarおよびgzipで圧縮された場合、約100 MBです。PostgreSQLバージョンは8.3です。 役立つアイデアを事前に感謝します。

1
DATABASE vs SCHEMAでユーザーのデフォルト特権を管理する方法
私は、SQLite3からPostgreSQL 9.3にかなりシンプルな内部データベース駆動型アプリケーションを移行し、DBのアクセス許可を強化したいと思っています。 アプリケーションは現在、データを更新するコマンドで構成されています。そして、それをクエリするもの。当然、他の方法でデータベースを維持する必要もあります(新しいテーブル、ビュー、トリガーなどを作成します)。 このアプリケーションは、最初はサーバーでホストされる唯一のアプリケーションですが、将来的に他のデータベースを備えたサーバーでホストされる可能性があると仮定して、それが必要になった場合に後でスクランブルする必要はありません未来。 これらはかなり一般的な一連の要件になると思いますが、この種のユーザー/特権の分離を使用して、PostgreSQLで新しいデータベースをセットアップする方法を説明する簡単なチュートリアルを見つけるのに苦労しています。参照は、グループ、ユーザー、ロール、データベース、スキーマ、およびドメインに関する詳細に続きます。しかし、私はそれらを混乱させます。 これは私がこれまでに試したものです(psql「postgres」として): CREATE DATABASE hostdb; REVOKE ALL ON DATABASE hostdb FROM public; \connect hostdb CREATE SCHEMA hostdb; CREATE USER hostdb_admin WITH PASSWORD 'youwish'; CREATE USER hostdb_mgr WITH PASSWORD 'youwish2'; CREATE USER hostdb_usr WITH PASSWORD 'youwish3'; GRANT ALL PRIVILEGES ON DATABASE hostdb TO hostdb_admin; GRANT CONNECT ON …

3
ユーザーpostgresのパスワード要件を削除
インストール時に、PostgreSQLにはdb rootユーザー(postgres)のパスワードがないことがわかります。 postgres=# select usename, passwd is null from pg_shadow; usename | ?column? ----------+---------- postgres | t (1 row) ...そして、次のように設定することをお勧めします。 alter role postgres password '<<very-secret>>'; (そして、それにpg_hba.conf応じてファイルを更新します) 私の質問は:パスワードがユーザーのために必要としなかったとき、前の状況に戻すために使用するSQLは何ですかpostgres。 一般に、どのロールのパスワード要件を削除するにはどうすればよいですか?パスワードの変更方法ではなく、パスワード要件(passwd表のヌル列pg_shadow)を削除する方法を尋ねています。

4
機能性能
ストアドプロシージャのパフォーマンス(以前の記事)と使いやすさが疑わしいMySQLのバックグラウンドから来て、私はPostgreSQLを会社の新製品として評価しています。 私がやりたいことの1つは、アプリケーションロジックの一部をストアドプロシージャに移動することです。そのため、ここでは、特にパフォーマンスの落とし穴に関して、PostgreSQL(9.0)で関数を使用する際のDOおよびDO N'T(ベストプラクティス)を求めています。

2
now()とcurrent_timestampの違い
PostgreSQLでは、now()and current_timestamp関数を使用しますが、違いはありません。 # SELECT now(), current_timestamp; now | now --------------------------------+-------------------------------- 04/20/2014 19:44:27.215557 EDT | 04/20/2014 19:44:27.215557 EDT (1 row) 何か不足していますか?

4
PostgreSQLのパフォーマンスにとってビューは有害ですか?
以下は、db設計に関する本からの抜粋です(データベース設計の開始ISBN:0-7645-7490-6): ビューを使用する場合の危険は、ビューに対してクエリをフィルタリングし、非常に大きなテーブルの非常に小さな部分を読み取ることです。ビュー自体に対するフィルタリングは、ビュー内のクエリの実行が完了した後に適用されるため、ビュー内でフィルタリングを実行する必要があります。ビューは通常、開発プロセスの高速化に役立ちますが、長期的にはデータベースのパフォーマンスを完全に低下させる可能性があります。 以下は、PostgreSQL 9.5ドキュメントからの抜粋です。 ビューを自由に使用することは、優れたSQLデータベース設計の重要な側面です。ビューを使用すると、テーブル構造の詳細をカプセル化できます。これは、一貫したインターフェイスの背後で、アプリケーションの進化とともに変化する可能性があります。 2つのソースは互いに矛盾しているようです(「ビューを使用して設計しない」対「ビューを使用して設計する」)。 ただし、PGでは、ビューはルールシステムを使用して実装されます。そのため、おそらく(これが私の質問です)ビューに対するフィルタリングは、ビュー内のフィルターとして書き直され、その結果、基礎となるテーブルに対して1つのクエリが実行されます。 私の解釈は正しく、PGはビューに出入りするWHERE句を組み合わせますか?それとも、それらを次々に別々に実行しますか?短い自己完結型の正しい(コンパイル可能な)例はありますか?

1
動作する完全なPostgreSQL DBバックアップとテストを取得する方法
MS SQL Serverの場合と同じようにPostgresの完全なバックアップを作成し、孤立したユーザーの世話をする方法について明確な答えが得られることを望んでいました。 私が読んだことから、それは間違っている可能性がありますが、良いPostgreSQLブログを見つけることは挑戦的でしたので、私にいくつかをお勧めしてくださいレプリケーション。開発者customにdirectory、tarを選択してPgadminIIIから取得したバックアップを復元し、OIDs を選択してフォーマットしましたが、2つはロードされtarませんでしたが、データではなくディレクトリのみでしたと彼は言い​​ました。今は本当に混乱しています。 私はPGAdminIIIを使用していますが、オプションがpg_dumpありpg_dumpallます。このデータベースをどこかでテスト復元するために必要なすべてのものをバックアップし、必要なすべてのデータとバックアップが適切であることを確認したいと思います。最終的には、一度に1日に1回、自動復元スクリプトを書きたいと思います。 pg_dumpall明らかに-globalsすべてをバックアップすることになっているオプションがありますが、ヘルプはオプションではなくをpg_dumpall示して-g, --globals-only dump only global objects, no databasesい--globalsます。 pg_dumpall少なくとも外部キーをバックアップすると思っていましたが、それでも「オプション」のようです。ドキュメントによれば、外部キーをバックアップpg_dumpallする-oオプションを使用する必要がある場合でも、外部キーをバックアップしたくない時期は本当に想像できません。これはデフォルトオプションとしてより理にかなっています。 孤立したユーザーをどのように処理し、すべてが揃っているかを検証するにはどうすればよいですか?実際にバックアップファイルを別のサーバーに復元し、すべてが機能することを確認したいと思います。PostgreSQLで実際のバックアップを作成して復元する方法について誰かが何か提案をしてくれたら、とても感謝しています。 PostgreSQLサーバーがありましたが、なぜアプリがOIDデフォルトでsをバックアップしないのか、まだ推測できません!あなたがそれを望むだろう時間の99.9%のようです。 更新1: Postgresのドキュメントでは、globals私が探していたオプションはこのバージョンのデフォルトオプションのようですが、それでも-oオプションが必要であると述べています。誰かが必要なすべてを備えた単一のデータベースを別の場所に復元するためのコマンドを確認したり、私にサンプルを提供したりできるなら、ありがたいです。 編集:サイトから質問を編集して、この質問の一意性を示すように求められます。この質問により、問題が発生し、バックアップのOID、グローバルと非グローバルの違い、およびバックアップが適切であるかどうかを確認するための復元推奨事項のテストが明確になります。答えがあったので、cronジョブを使用してPostgresでバックアップ、グローバル/ OIDの把握、およびテスト復元プロセスを毎晩開始することができました。助けてくれてありがとう!


4
作成されたユーザーは、許可なしでPostgreSQLのすべてのデータベースにアクセスできます
PostgreSQLのセットアップに関して何かが欠けているに違いありません。私がやりたいのは、特定のユーザーが指定したデータベースにのみアクセスできるように、互いに分離された複数のデータベースとユーザーを作成することです。しかし、私が判断できることから、作成されたユーザーは、特定の許可が与えられなくてもすべてのデータベースにアクセスできます。 Ubuntu Server 12.04で行うことは次のとおりです。 apt-get postgresqlをインストール sudo -u postgres createuser -DRSP mike1(新しいユーザーのパスワードの指定) sudo -u postgres createdb data1 psql -h localhost -U mike1 data1(ログインするユーザーmike1のパスワードの指定) 新しいユーザー「mike1」は、データベース「data1」に接続してテーブルなどを作成しても問題ないようです。また、これは、GRANTコマンドをまったく実行せずに(および「data1」の所有者は「postgres手順3)の所有者。これは実際にどのように機能するはずですか? 私がやりたいのは、mike1にdata1へのフルアクセスを許可してから、これをより多くのユーザーとデータベースに対して繰り返し、ユーザーが選択した1つ(またはおそらく複数)のデータベースにのみアクセスできるようにすることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.