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

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

3
同じテーブルに複数回参加する方法は?
「hierarchy_table」と「name_table」の2つのテーブルがあります。 階層テーブルには、複数の親と子を持つオブジェクトが含まれています。親と子はそれぞれIDで参照されます。 | object_id | parent_id_1 | parent_id_2 | child_id_1 | child_id_2 | ----------------------------------------------------------------------------- | 1234 | 9999 | 9567 | 5555 | 5556 | ----------------------------------------------------------------------------- hierarchy_tableの各オブジェクトIDは、name_tableにエントリを持っています。 | name_id | name | -------------------------- | 1234 | ABCD | -------------------------- | 9999 | ZYXW | -------------------------- | ... hierarchy_tableの各IDをname_tableに複数回結合して、すべての名前が入力された結果を得るにはどうすればよいですか? このような: | …

2
配列integer []:テーブル内のすべての個別の値を取得してカウントする方法は?
SQL(PostgreSQL)はあまり得意ではありません。これが私がやりたいことです: テーブルとフィールドがあります: id SERIAL inet INET ports integer[] id | inet | ports ----+------------+------------ 2 | 1.2.2.1 | {80} 1 | 1.2.3.4 | {80,12} ... どうやって このテーブルで使用されているすべての「ポート」値を取得します:80、12 特定のポートにあるinetアドレスの数を数えます: このような: port | count --------+------------ 12 | 1 80 | 2 ... 誰かがDjangoバージョンを探している場合: class Unnest(Func): function = 'UNNEST' Model.objects \ .annotate(port=Unnest('ports', distinct=True)) …

2
データベースのテーブル膨張とは何ですか?
誰かがデータベースの膨らみの意味を説明できますか?たとえば、インデックスが肥大化しているとはどういう意味ですか。私はそれを探してみましたが、膨満が何であるか、何が原因であるのか、何が原因であるのかについての説明はありません。

1
PostgreSQLでのシーケンスの圧縮
私が持っているid serial PRIMARY KEYPostgreSQLのテーブルの列を。id対応する行を削除したため、多くのが欠落しています。 ここで、シーケンスを再起動idし、元のid順序が維持されるようにs を再割り当てすることで、テーブルを「圧縮」したいと思います。出来ますか? 例: 今: id | data ----+------- 1 | hello 2 | world 4 | foo 5 | bar 後: id | data ----+------- 1 | hello 2 | world 3 | foo 4 | bar StackOverflowの回答で提案されたものを試しましたが、うまくいきませんでした: # alter sequence t_id_seq restart; ALTER SEQUENCE # …

1
最高実行クエリを確認/知る方法
データベースで最も実行回数の多いクエリの統計を収集したいと思います。 そのため、私はクエリを追跡する方法を知っている必要があります。これにより、大きなDBがあるため、ビューまたはマテリアライズドビューを作成して、最も実行回数の多いクエリの結果をキャッシュできます。

2
Postgres 9.3でのjson_object_agg()の実装
json_object_agg()Postgres 9.4 の機能が必要な気がしますが、9.3からのアップグレードは今のところできません。9.3でやりたいことを行う方法はありますか?これが私のシナリオです。click_activity次のようなデータのテーブルがあります user | offer | clicks -----|-------|-------- fred |coupons| 3 fred |cars | 1 john |coupons| 2 しかし、これを次のように変えたいと思います:(ユーザーごとのアクティビティを集計します) user | activity -----|---------- fred | {"coupons": 3, "cars": 1} john | {"coupons": 2} json_object_agg()Postgres 9.4 の機能はこれを完全に行うと思います、私が呼ばなければならないのは select user, json_object_agg(offer, clicks) from click_activity group by 1 9.3でこれを行う方法はありますか?ありがとうございました!

3
PostgreSQLクエリで返される不明な型
次のクエリは機能します。 SELECT a, b FROM unnest(ARRAY[(1,2), (3,4)]) AS t(a integer, b integer); a b _ _ 1 2 3 2 ただし、次のような別の列タイプを使用することはできませんでしたvarchar(255)。 SELECT a, b FROM unnest(ARRAY[(1,'hello'), (3,'world')]) AS t(a integer, b varchar(255)); ERROR: 42804: function return row and query-specified return row do not match DETAIL: Returned type unkown at ordinal …

1
PostgreSQLデータベースへのリモートアクセスのタイムアウトオプションはありますか?
私が働いている経由でリモートのPostgreSQLデータベースにpgAdminでIII。pgAdminで何もせずにそれほど長くない期間(たとえば10〜15分)が経過すると、接続は自動的に期限切れになります。そのため、再接続するかどうかを尋ねるエラーメッセージが表示されます。これには約10秒かかります。データベース構造が崩れるため、以前開いていたスキーマを再度開く必要があります。 タイムアウトパラメータをどこかに変更して、接続の有効期限が長くなるのを防ぐ方法はありますか?

1
1つだけではなく、PostgreSQLで多くのスキーマを使用することの長所と短所?
(PostgreSql 9.4に裏打ちされた)大規模なSAASアプリケーションの場合、300,000を超えるアカウントがあり(そして成長中)、アカウントごとにスキーマを使用してデータをパーティション分割することと、すべてのデータを1つのスキーマに入れ、外部キーを使用することの長所と短所は何ですか。クエリで分割しますか? 以前、多くのスキーマを操作するときにpg_dumpが非常に遅くなっていましたが、それが今日のケースかどうかはわかりません。また、データベース構造の変更はすべてのスキーマで行う必要があることも認識しています。そしてプラス面では、スキーマをある物理サーバーから別の物理サーバーに移動するのは簡単です。また、スキーマをバックアップから復元することはもちろんです。データをそのようにパーティション分割することは理にかなっています。 それで、私が見逃している長所と短所は何ですか?

1
名前のないチェック制約をPostgresQLテーブルにどのように削除しますか?
PostgresQLテーブルを作成しましたが、名前のないチェック制約を列の1つに追加しました。 CREATE TABLE FOO ( id serial primary key, price_range smallint CHECK (price_range > 0), url varchar(255) ); この制約を削除したいのですが、どうすればいいのかわかりません。典型的なALTER TABLE ... DROP CONSTRAINT ...は必要ですが、constraint_name持っていません。 私はここに答えがあることを知っていますが、そこの答えに従ってチェック制約の名前を決定しようとしたとき: SELECT * FROM information_schema.constraint_table_usage WHERE table_name = 'your_table' 返されたのは、列のチェックではなく、主キー制約を参照するconstraint_nameエントリの単一の制約だけでした。だから私が何かを逃していない限り、その答えは私を助けませんでした。foo pkeyprice データを失わずにこの制約を削除するにはどうすればよいですか? ありがとう!

5
Postgresは分割テーブルのインデックスを継承します
状態ごとに53のサブテーブルに分割した約6000万行のテーブルがあります。これらのテーブルは、次のように大きなテーブルを「継承」します。 CREATE TABLE b2b_ak (LIKE b2b including indexes, CHECK ( state = 'AK') ) INHERITS (b2b8) TABLESPACE B2B; 私の質問はこれです:copyステートメントが完了するまでb2b8でインデックスを作成しない場合、サブテーブルはインデックスを継承しますか?言い換えれば、私はこれをやりたいです: Create b2b8 Create b2b8_ak inherits b2b8 COPY b2b8 FROM bigcsvfile.csv CREATE INDEX CONCURRENTLY そして、すべてがサブテーブルにすべてのインデックスを作成したことがわかります。

5
MySQLクエリ変数に相当するPostgreSQLですか?
これらのタイプのMySQLクエリをPostgreSQLに適応させる簡単な方法はありますか? MySQLのように変数を設定する set @aintconst = -333 set @arealconst = -9.999 ないようです。 SELECTクエリから変数を割り当て、それらの変数を後で私のSQLで使用する: select @pfID := id from platform where bios like '%INTEL%' select @clientID := id from client where platformID = @pfID 特に(2)については、ポインタに非常に感謝します。

1
シリアル列のシーケンスを更新する権限を明示的に付与する必要がありますか?
最近、シリアルID列を含むテーブルをスーパーユーザーとして作成しました。 create table my_table ( id serial primary key, data integer ); スーパーユーザー以外のユーザーにそのテーブルへの書き込みアクセスを許可したいので、アクセス許可を付与しました。 grant select, update, insert, delete on table my_table to writer; ユーザーがmy_table_id_seqシリアル列に関連付けられたシーケンスを変更する権限を持っていなかったため、そうした後のランダムな時点で、そのユーザーによる挿入は失敗し始めました。残念ながら、現在のデータベースではそれを再現できません。 私はこのようにユーザーに必要な許可を与えることでこれを回避しました: grant all on table my_table_id_seq to writer; 誰かが私を理解するのに役立ちますか なぜ、ある時点で、以前は十分であった権限が失敗し始めるのでしょうか? シリアル列を持つテーブルに書き込み権限を付与する適切な方法は何ですか?

1
postgresqlでのSQL時間ごとのデータ集約
私はデータベースの初心者なので、このデータベースについてあなたの助けを求めています。 時系列データを含むテーブルがあります。 2012/01/01 00:10, 10 2012/01/01 00:30, 5 2012/01/01 01:00, 10 2012/01/01 01:40, 10 2012/01/01 02:00, 20 テーブルは、間隔の上限のみを維持することにより、間隔ベースのデータを格納しています。たとえば、最初の行は[00:00-00:10]からの間隔を10の値で表し、2番目の行は(00:10-00:30]からの間隔を5の値で表し、3番目の行は間隔は(00:30-01:00)で、値は10です。 上記のような構造の時間別データを集約するために、Postgresで効率的なクエリが必要です。したがって、結果は次のようになります。 2012/01/01 00:00, 2012/01/01 01:00, 25 2012/01/01 01:00, 2012/01/01 02:00, 30 時系列データは大きいので、これをインデックス付けする際の助けがあれば非常にありがたいです。 ありがとう、ダン

2
postgresqlデータベースが存在するかどうかを確認します(大文字と小文字を区別しない方法)
dbが存在するかどうかをチェックする「エレガントな組み込み」の大文字と小文字を区別しない方法はありますか? しか見つかりませんでしたSELECT datname FROM pg_catalog.pg_database WHERE datname='dbname'が、これはCSチェックです。すべてのデータベース名を取得して手動でフィルタリングすることを最初に思い浮かぶのは、よりエレガントな方法があると思います。

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