問題タブ [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.
sql - 新しいPostgreSQLJSONデータ型内のフィールドを使用してクエリを実行するにはどうすればよいですか?
PostgreSQL9.2の新しいJSON関数のドキュメントや例を探しています。
具体的には、一連のJSONレコードが与えられます。
名前でレコードを検索するSQLを作成するにはどうすればよいですか?
バニラSQLの場合:
公式の開発マニュアルは非常にまばらです。
- http://www.postgresql.org/docs/devel/static/datatype-json.html
- http://www.postgresql.org/docs/devel/static/functions-json.html
更新I
PostgreSQL9.2で現在可能なことを詳しく説明した要点をまとめました。いくつかのカスタム関数を使用すると、次のようなことが可能です。
アップデートII
これで、JSON関数を独自のプロジェクトに移動しました。
PostSQL -PostgreSQLとPL/v8を完全に素晴らしいJSONドキュメントストアに変換するための一連の関数
json - PostgresでJSONフィールドにインデックスを作成するには?
PostgreSQL 9.3 Beta 2 (?) では、JSON フィールドにインデックスを作成するにはどうすればよいですか? ->
for 演算子を使用して試してみましhstore
たが、次のエラーが発生しました。
エラー: データ型 json にはアクセス メソッド "btree" の既定の演算子クラスがありません ヒント: インデックスの演算子クラスを指定するか、データ型の既定の演算子クラスを定義する必要があります。
php - $mysqli->insert_id に相当する postgresql
postgresql 9.3 に $mysqli->insert_id に相当するものはありますか? 1 つのテーブルにインポートしていますが、そのテーブルで最後に作成された主キーを 2 番目のテーブルに外部キーとして適用する必要がありますか? 表 1 ----> 表 2 でレコードを完成させます。
もう少し情報:
**上記の SQL を使用して、レコードを挿入します。次の SQL 挿入でこれをどのように利用しますか? 返す ID を使用する場合、この ID はどこに保存されますか? 別の INSERT ステートメントでどのように使用しますか?
postgresql - SELECT CURRVAL (pg_get_serial_sequence 何か間違ったことをしていますか?
最初のステートメントがテーブルに挿入した後、テーブルから最後のrecord_idを取得しようとしています。最後のIDを表示するためのコードを印刷しているように見えますか?
コードはこちら
postgresql-9.3 - postgresql 9.3 の JSON 型の列で JSON 演算子を使用する方法
なぜこれがうまくいかないのか誰にもわかりますか?マニュアルのセクション 9.15によると、->
オペレーターは JSON データ型の要素にアクセスする必要があります。情報スキーマは列が「json」型であると言っていますが、実際にはスカラー文字列のままのように見えます(表示されるときの引用符に注意してください)。
アップデート:
私がやっているのとまったく同じように動作するはずであることを示すこれらの2つの投稿をこことここで見つけました。念のためにこれを試しました:
JSON 機能を取得するために必要なビルド オプションまたは contrib モジュールはありますか?
json - 新しい PostgreSQL JSON データ型内のフィールドを変更するにはどうすればよいですか?
postgresql 9.3 ではSELECT
、JSON データ型のフィールドを特定できますが、どのように変更しますUPDATE
か? この例は、postgresql のドキュメントやオンラインのどこにも見つかりません。私は明白なことを試しました:
json - postgres JSON インデックスは、従来の正規化されたテーブルと比較して十分に効率的ですか?
現在の Postgresql のバージョンでは、JSON コンテンツにさまざまな機能が導入されていますが、本当にそれらを使用する必要があるかどうかは心配です。つまり、何が機能し、何が機能しないかについて確立された「ベスト プラクティス」がまだないということです。見つけられません。
具体的な例があります。オブジェクトに関するテーブルがあり、とりわけ、そのオブジェクトの代替名のリストが含まれています。そのすべてのデータは、取得目的で JSON 列にも含まれます。たとえば(他のすべての無関係なフィールドをスキップします)。
「altnames の 1 つが 'foobar' であるすべてのオブジェクトを一覧表示する」という形式のクエリが必要になります。予想されるテーブル サイズは、数百万レコードのオーダーです。そのために Postgres JSON クエリを使用でき、インデックスを作成することもできます (たとえば、JSON 配列内の要素を検索するためのインデックス)。ただし、そのようにする必要がありますか、それとも推奨されていないひねくれた回避策ですか?
もちろん、従来の代替方法は、メイン テーブルへの名前と外部キーを含む、1 対多の関係用のテーブルを追加することです。その性能がよくわかります。ただし、それには独自の欠点があります。これは、そのテーブルと JSON の間でデータが重複することを意味するためです (整合性のリスクの可能性があります)。または、その JSON 戻りデータをリクエストごとに動的に作成しますが、これには独自のパフォーマンス ペナルティがあります。
postgresql - Postgresql は、テーブルを再作成した後に付与を忘れる
データベースの変更を管理および実行するために、liquibase を使用しています。私たちの DEV 環境 (特にローカル マシン) では、テーブルを頻繁に再作成して白紙の状態にします。MySQL から Postgres に移行したばかりで、これらのテーブルの再作成に関連する問題に直面しています。
最初に、DB ユーザーにこれを付与しました。
これは、独自の DB に接続した後、 psqlを介して実行されます (public がデフォルト/唯一のスキーマです)。
liquibase にテーブルを再作成するように依頼するまでは、すべて問題ありません。この場合、すべてのテーブルが削除され、再度作成されます。
その後、myduserはテーブルに対する権限をすべて失ったようです。
いくつかのリソース (このような) によると、デフォルトの権限を変更する必要があるため、以下に従います。
ただし、これは非常に論理的に見えますが、何も変わりませんでした。テーブルを再作成した後も、すべての許可 (選択を含む) は失われます。
私たちは何を間違っていますか、それとも他に何をする必要がありますか?
アップデート
\ddp の表示: デフォルトのアクセス権限
所有者 | スキーマ | タイプ | アクセス権
----------+--------+----------+----------------- ---
ポストグル | 公開 | シーケンス | mydb=rU/postgres
ポストグル | 公開 | テーブル | mydb=arwd/postgres
arrays - Postgres JSON 配列内でのクエリ
列に格納された配列内の要素をどのように検索しjson
ますか? (更新:jsonb
列については、9.4 の更新された回答も参照してください。)
このような JSON ドキュメントがある場合、次のjson
名前の列に保存されblob
ます。
私ができるようにしたいのは次のようなものです:
一致するすべての行を取得します。"blob"->'ids'
しかし、Postgres 配列ではなく JSON 値を返すため、これは機能しません。
可能であれば、個々の ID のインデックスも作成したいと思います。
postgresql - マテリアライズド ビューを更新しても、追加された列は含まれません
説明書より
CREATE MATERIALIZED VIEW は CREATE TABLE AS と似ていますが、ビューの初期化に使用されたクエリも記憶しているため、後で必要に応じて更新できる点が異なります。
私が理解しているように、具体化されたビューを更新すると re と同じ効果が得られるはずcreate view as
です。しかし、それはここで起こることではありません。
列が 1 つのテーブルを作成する
マテリアライズド ビューを作成する
ソーステーブルに列が追加されました
そして、具体化されたビューが更新されます
新しい列はどこにありますか? それは期待される動作ですか?もしそうなら、私はマニュアルが誤解を招くと思います。