問題タブ [postgresql-9.3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
217467 参照

sql - 新しいPostgreSQLJSONデータ型内のフィールドを使用してクエリを実行するにはどうすればよいですか?

PostgreSQL9.2の新しいJSON関数のドキュメントや例を探しています。

具体的には、一連のJSONレコードが与えられます。

名前でレコードを検索するSQLを作成するにはどうすればよいですか?

バニラSQLの場合:

公式の開発マニュアルは非常にまばらです。

更新I

PostgreSQL9.2で現在可能なことを詳しく説明した要点をまとめました。いくつかのカスタム関数を使用すると、次のようなことが可能です。

アップデートII

これで、JSON関数を独自のプロジェクトに移動しました。

PostSQL -PostgreSQLとPL/v8を完全に素晴らしいJSONドキュメントストアに変換するための一連の関数

0 投票する
1 に答える
75582 参照

json - PostgresでJSONフィールドにインデックスを作成するには?

PostgreSQL 9.3 Beta 2 (?) では、JSON フィールドにインデックスを作成するにはどうすればよいですか? ->for 演算子を使用して試してみましhstoreたが、次のエラーが発生しました。

エラー: データ型 json にはアクセス メソッド "btree" の既定の演算子クラスがありません ヒント: インデックスの演算子クラスを指定するか、データ型の既定の演算子クラスを定義する必要があります。

0 投票する
3 に答える
2214 参照

php - $mysqli->insert_id に相当する postgresql

postgresql 9.3 に $mysqli->insert_id に相当するものはありますか? 1 つのテーブルにインポートしていますが、そのテーブルで最後に作成された主キーを 2 番目のテーブルに外部キーとして適用する必要がありますか? 表 1 ----> 表 2 でレコードを完成させます。

もう少し情報:

**上記の SQL を使用して、レコードを挿入します。次の SQL 挿入でこれをどのように利用しますか? 返す ID を使用する場合、この ID はどこに保存されますか? 別の INSERT ステートメントでどのように使用しますか?

0 投票する
1 に答える
8234 参照

postgresql - SELECT CURRVAL (pg_get_serial_sequence 何か間違ったことをしていますか?

最初のステートメントがテーブルに挿入した後、テーブルから最後のrecord_idを取得しようとしています。最後のIDを表示するためのコードを印刷しているように見えますか?

コードはこちら

0 投票する
1 に答える
8002 参照

postgresql-9.3 - postgresql 9.3 の JSON 型の列で JSON 演算子を使用する方法

なぜこれがうまくいかないのか誰にもわかりますか?マニュアルのセクション 9.15によると、->オペレーターは JSON データ型の要素にアクセスする必要があります。情報スキーマは列が「json」型であると言っていますが、実際にはスカラー文字列のままのように見えます(表示されるときの引用符に注意してください)。

アップデート:

私がやっているのとまったく同じように動作するはずであることを示すこれらの2つの投稿をここここで見つけました。念のためにこれを試しました:

JSON 機能を取得するために必要なビルド オプションまたは contrib モジュールはありますか?

0 投票する
21 に答える
370397 参照

json - 新しい PostgreSQL JSON データ型内のフィールドを変更するにはどうすればよいですか?

postgresql 9.3 ではSELECT、JSON データ型のフィールドを特定できますが、どのように変更しますUPDATEか? この例は、postgresql のドキュメントやオンラインのどこにも見つかりません。私は明白なことを試しました:

0 投票する
2 に答える
16930 参照

json - postgres JSON インデックスは、従来の正規化されたテーブルと比較して十分に効率的ですか?

現在の Postgresql のバージョンでは、JSON コンテンツにさまざまな機能が導入されていますが、本当にそれらを使用する必要があるかどうかは心配です。つまり、何が機能し、何が機能しないかについて確立された「ベスト プラクティス」がまだないということです。見つけられません。

具体的な例があります。オブジェクトに関するテーブルがあり、とりわけ、そのオブジェクトの代替名のリストが含まれています。そのすべてのデータは、取得目的で JSON 列にも含まれます。たとえば(他のすべての無関係なフィールドをスキップします)。

「altnames の 1 つが 'foobar' であるすべてのオブジェクトを一覧表示する」という形式のクエリが必要になります。予想されるテーブル サイズは、数百万レコードのオーダーです。そのために Postgres JSON クエリを使用でき、インデックスを作成することもできます (たとえば、JSON 配列内の要素を検索するためのインデックス)。ただし、そのようにする必要がありますか、それとも推奨されていないひねくれた回避策ですか?

もちろん、従来の代替方法は、メイン テーブルへの名前と外部キーを含む、1 対多の関係用のテーブルを追加することです。その性能がよくわかります。ただし、それには独自の欠点があります。これは、そのテーブルと JSON の間でデータが重複することを意味するためです (整合性のリスクの可能性があります)。または、その JSON 戻りデータをリクエストごとに動的に作成しますが、これには独自のパフォーマンス ペナルティがあります。

0 投票する
1 に答える
4536 参照

postgresql - Postgresql は、テーブルを再作成した後に付与を忘れる

データベースの変更を管理および実行するために、liquibase を使用しています。私たちの DEV 環境 (特にローカル マシン) では、テーブルを頻繁に再作成して白紙の状態にします。MySQL から Postgres に移行したばかりで、これらのテーブルの再作成に関連する問題に直面しています。

最初に、DB ユーザーにこれを付与しました。

これは、独自の DB に接続した後、 psqlを介して実行されます (public がデフォルト/唯一のスキーマです)。

liquibase にテーブルを再作成するように依頼するまでは、すべて問題ありません。この場合、すべてのテーブルが削除され、再度作成されます。

その後、myduserはテーブルに対する権限をすべて失ったようです。

いくつかのリソース (このような) によると、デフォルトの権限を変更する必要があるため、以下に従います。

ただし、これは非常に論理的に見えますが、何も変わりませんでした。テーブルを再作成した後も、すべての許可 (選択を含む) は失われます。

私たちは何を間違っていますか、それとも他に何をする必要がありますか?

アップデート

\ddp の表示: デフォルトのアクセス権限

所有者 | スキーマ | タイプ | アクセス権
----------+--------+----------+----------------- ---
ポストグル | 公開 | シーケンス | mydb=rU/postgres
ポストグル | 公開 | テーブル | mydb=arwd/postgres

0 投票する
3 に答える
18689 参照

arrays - Postgres JSON 配列内でのクエリ

列に格納された配列内の要素をどのように検索しjsonますか? (更新:jsonb列については、9.4 の更新された回答も参照してください。)

このような JSON ドキュメントがある場合、次のjson名前の列に保存されblobます。

私ができるようにしたいのは次のようなものです:

一致するすべての行を取得します。"blob"->'ids'しかし、Postgres 配列ではなく JSON 値を返すため、これは機能しません。

可能であれば、個々の ID のインデックスも作成したいと思います。

0 投票する
1 に答える
2167 参照

postgresql - マテリアライズド ビューを更新しても、追加された列は含まれません

説明書より

CREATE MATERIALIZED VIEW は CREATE TABLE AS と似ていますが、ビューの初期化に使用されたクエリも記憶しているため、後で必要に応じて更新できる点が異なります。

私が理解しているように、具体化されたビューを更新すると re と同じ効果が得られるはずcreate view asです。しかし、それはここで起こることではありません。

列が 1 つのテーブルを作成する

マテリアライズド ビューを作成する

ソーステーブルに列が追加されました

そして、具体化されたビューが更新されます

新しい列はどこにありますか? それは期待される動作ですか?もしそうなら、私はマニュアルが誤解を招くと思います。