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

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

5
PostgreSQLサーバーのSSL証明書を調べる方法
実行中のPostgreSQLサーバーがあり、SSLが有効になっているとします。「標準」のLinuxおよびPostgreSQLツールを使用して、そのSSL証明書を調べるにはどうすればよいですか? 私はあなたが実行から得られるものに似た出力を期待していますopenssl x509 -text ...。また、1行または2行のコマンドラインでの回答を期待しているので、パケットスニファーを実行する必要はありません。 PostgreSQLサーバーにアクセスできないため、その構成ファイルを直接見ることができません。 私はスーパーユーザーのログインを持っていないので、ssl_cert_file設定の値を取得できませんpg_read_file。 openssl s_client -connect ...PostgreSQLはSSLハンドシェイクをすぐに実行したくないようであるため、使用は機能しません。 psqlドキュメントをざっと見てみると、起動時にその情報を表示するコマンドラインパラメーターが見つかりませんでした。(特定の暗号情報は表示されますが。)

1
PostgreSQLでテーブルデータをアトミックに置き換える方法
SELECTプロセス中に着信ステートメントに影響を与えることなく、テーブルの内容全体を置換したい。 ユースケースは、定期的に抽出されるメールボックス情報を保存するテーブルを持ち、PostgreSQLテーブルに保存する必要があることです。同じテーブルを常に照会しているアプリケーションを使用している多くのクライアントがいます。 通常、私は(擬似コード着信)のようなことをします... BEGIN TRANSACTION TRUNCATE TABLE INSERT INTO COMMIT ただし、残念ながらこのプロセス中にテーブルを読み取ることはできません。INSERT INTO完了するまでに時間がかかるためです。テーブルはロックされています。 MySQLでは、RENAME TABLEこれらの問題を回避するためにアトミックコマンドを使用していました... CREATE TABLE table_new LIKE table; INSERT INTO table_new; RENAME TABLE table TO table_old, table_new TO table; *atomic operation* DROP TABLE table_old; PostgreSQLでこれをどのように実現できますか? この質問の目的のために、私は外部キーを使用していないと仮定できます。
14 postgresql 

3
PostgreSQLスキーマ名の有効な形式は何ですか?
PostgreSQLスキーマ名の有効な形式を説明するドキュメントが見つからないようです。スキーマ名では次のことはできません。 数字で始める スペースがあります 皮切りに pg_ ほかに何か?どこを見ればいいですか?
14 postgresql 

1
PostgreSQLでのJSONBのクエリ
私は、テーブルを持つpersons2つの列が含まれている、idとJSONBベースのdata列を(この表は単なるPostgreSQLのJSONサポートで遊んする実演目的のために作られました)。 ここで、2つのレコードが含まれていると想定します。 1, { name: 'John', age: 30 } 2, { name: 'Jane', age: 20 } ここで、25歳以上のすべての人の名前を取得したいとします。私が試したのは次のとおりです。 select data->'name' as name from persons where data->'age' > 25 残念ながら、これはエラーになります。の->>代わりにを使用して解決でき->ますが、数値は比較されないため、比較は期待どおりに機能しなくなりますが、文字列としての表現: select data->'name' as name from persons where data->>'age' > '25' 次に、を使用->してキャストすることで問題を実際に解決できることがわかりましたint: select data->'name' as name from persons where cast(data->'age' as int) > …

4
PostgreSQLのインデックスの作成ステートメントを表示する方法はありますか
インデックスの膨張に悩まされているPostgreSQLでインデックスを再作成する必要があります。作成中にインデックスを使用できるようにする必要があるため、REINDEXを使用できません。新しい名前でインデックスを再作成してから、古いインデックスを削除します。インデックスを作成するために使用されたSQLステートメントを確認して、それをコピーする方法はありますか?
14 postgresql  index 

1
DBeaverでPostgreSQLメッセージ(RAISE NOTICEなど)をどのように表示しますか?
これはDBeaver UI /構成の質問だと思いますが、スクリプト(Alt-X)を実行するとメッセージがどこにあるのかわかりません。 PGAdminIIIでは、スクリプトを実行してNOTICE出力を確認します。 DBeaverでは、同じスクリプトが[統計]タブに出力されません。しかし、これがメッセージを探すべき場所かどうかはわかりません。

1
Postgres:関係が存在しないエラー
pg_restoreを使用して、ダンプファイルでpostgres dbをロードしました。私は自分のユーザーで自分のデータベースに接続しました: sudo -u arajguru psql dump select current_user; current_user -------------- arajguru これで、新しく作成されたすべてのテーブルを確認できました。 dump=> \dt List of relations Schema | Name | Type | Owner --------+-------------------+-------+---------- public | Approvals | table | arajguru public | Approvers | table | arajguru public | Conditions | table | arajguru public | Entities …
14 postgresql 

4
Postgresデータベースのすべてのデータを削除する
--data-onlyand --column-insertsフラグを使用して本番サーバーから新しいdbダンプを作成したので、ステージングサーバーで復元を実行するときにデータを挿入するための挿入ステートメントの束しかありません。 pg_dump -h localhost -U adminuser --data-only --column-inserts maindb > maindb.sql 本番ダンプからデータを復元する前に、ステージングサーバーデータベースのすべてのデータを最初に削除するにはどうすればよいですか? すべてのデータのみを削除したいので、データベースやそのすべてのものを削除して作成する必要はありません。データを削除して、新しいデータをすべて挿入したいだけです。 いくつかの理由により、データベースを削除して作成するオプションがありません。私はすべてのデータを削除して挿入するだけでよいので、これを行う方法を見つけるために必要なことは何でも、進んで進んでいきますが、最初から手助けが必要です。 このプロセスも自動化する必要があります。「本番データベースからのデータのダンプ」、「ステージングデータベースのデータの削除」、「ステージングデータベースへのデータの復元」を自動化します。「ステージングデータベースのデータの削除」の部分で助けが必要です。 PostgreSQL 9.5.2で実行しています

2
NULL値に関するPostgreSQL UPSERTの問題
Postgres 9.5の新しいUPSERT機能の使用に問題があります 別のテーブルからデータを集計するために使用されるテーブルがあります。複合キーは20列で構成され、そのうち10列はNULL可能です。以下に、特にNULL値を使用して、私が抱えている問題のより小さなバージョンを作成しました。 CREATE TABLE public.test_upsert ( upsert_id serial, name character varying(32) NOT NULL, status integer NOT NULL, test_field text, identifier character varying(255), count integer, CONSTRAINT upsert_id_pkey PRIMARY KEY (upsert_id), CONSTRAINT test_upsert_name_status_test_field_key UNIQUE (name, status, test_field) ); このクエリの実行は、必要に応じて機能します(最初の挿入、その後の挿入は単純にカウントを増やします)。 INSERT INTO test_upsert as tu(name,status,test_field,identifier, count) VALUES ('shaun',1,'test value','ident', 1) ON CONFLICT …

1
PostgreSQLがより高価な結合順序を選択するのはなぜですか?
デフォルトを使用したPostgreSQL、および default_statistics_target=1000 random_page_cost=1.5 バージョン PostgreSQL 10.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 6.4.0) 6.4.0, 64-bit 掃除機をかけて分析しました。クエリは非常に簡単です。 SELECT r.price FROM account_payer ap JOIN account_contract ac ON ap.id = ac.account_payer_id JOIN account_schedule "as" ON ac.id = "as".account_contract_id JOIN schedule s ON "as".id = s.account_schedule_id JOIN rate r ON s.id = r.schedule_id WHERE …

1
なぜこのLEFT JOINがLEFT JOIN LATERALよりもパフォーマンスがそれほど悪いのですか?
次の表があります(Sakilaデータベースから取得)。 film:film_idはpkeyです 俳優:actor_idはpkeyです film_actor:film_idとactor_idは、映画/俳優のfkeyです 特定の映画を選択しています。この映画では、すべての俳優がその映画に参加することも望んでいます。これには2つのクエリがあります。1つのクエリLEFT JOINと1 つのクエリですLEFT JOIN LATERAL。 select film.film_id, film.title, a.actors from film left join ( select film_actor.film_id, array_agg(first_name) as actors from actor inner join film_actor using(actor_id) group by film_actor.film_id ) as a on a.film_id = film.film_id where film.title = 'ACADEMY DINOSAUR' order by film.title; select film.film_id, film.title, …

1
PostgreSQL 9.5は、Windows 10の秋の更新後に起動しません
Windows 10 Fallアップデート(1709)をインストールしましたが、PostgreSQL 9.5サーバーが起動しなくなりました。更新前の昨日は機能していましたが、構成を変更していません。 イベントビューアを確認しましたが、次のエラーメッセージが見つかりました。 2017-10-19 11:32:32 CEST LOG: invalid value for parameter "lc_monetary": "Czech_Czech Republic.1250" 2017-10-19 11:32:32 CEST LOG: invalid value for parameter "lc_numeric": "Czech_Czech Republic.1250" 2017-10-19 11:32:32 CEST LOG: invalid value for parameter "lc_time": "Czech_Czech Republic.1250" 2017-10-19 11:32:32 CEST FATAL: configuration file "C:/Program Files/PostgreSQL/9.5/data/postgresql.conf" contains errors MicrosoftはFallアップデートでロケール名を変更したようです。利用可能なロケール名のリストが見つからなかったため、Postgres 10をインストールすることに決め、疑いを確認しました、Postgres …

2
array_agg()が非集約ARRAY()コンストラクターより遅いのはなぜですか?
8.4より前のPostgreSQL向けに作成された古いコードをレビューしたところ、本当に気の利いたものが見つかりました。当時はカスタム関数でこれの一部を実行していたことを覚えていますが、事前にarray_agg()どのようなものかを忘れていました。レビューのために、現代の集計はこのように書かれています。 SELECT array_agg(x ORDER BY x DESC) FROM foobar; しかし、昔々、このように書かれていました、 SELECT ARRAY(SELECT x FROM foobar ORDER BY x DESC); それで、私はいくつかのテストデータでそれを試しました。 CREATE TEMP TABLE foobar AS SELECT * FROM generate_series(1,1e7) AS t(x); 結果は驚くべきものでした。.#OldSchoolCoolの方法は非常に高速で、25%高速化されました。さらに、ORDERを使用せずに単純化すると、同じ遅延が示されました。 # EXPLAIN ANALYZE SELECT ARRAY(SELECT x FROM foobar); QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------- Result (cost=104425.28..104425.29 rows=1 width=0) (actual time=1665.948..1665.949 rows=1 …

1
GINインデックス付きTSVECTOR列から部分一致を取得します
これをクエリして結果を取得したい: SELECT * FROM ( SELECT id, subject FROM mailboxes WHERE tsv @@ plainto_tsquery('avail') ) AS t1 ORDER by id DESC; これは機能し、をtsv含む行を返しますAvailable。しかし、私が使用avai(ドロップlable)した場合、何も見つかりません。 すべてのクエリは辞書にある必要がありますか?このような文字だけを照会することはできませんか?電子メールの本文(コンテンツ)を含むデータベースがあり、毎秒成長するにつれて高速にしたいと思います。現在使用しています ... WHERE content ~* 'letters`

7
グループ化またはウィンドウ
ウィンドウ関数を使用して解決できると思う状況がありますが、よくわかりません。 次の表を想像してください CREATE TABLE tmp ( date timestamp, id_type integer ) ; INSERT INTO tmp ( date, id_type ) VALUES ( '2017-01-10 07:19:21.0', 3 ), ( '2017-01-10 07:19:22.0', 3 ), ( '2017-01-10 07:19:23.1', 3 ), ( '2017-01-10 07:19:24.1', 3 ), ( '2017-01-10 07:19:25.0', 3 ), ( '2017-01-10 07:19:26.0', 5 ), …

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