web-dev-qa-db-ja.com

hstoreフィールドからすべてのタグを抽出する

Postgres 9.2 + postgis 2.1データベースからオブジェクトIDですべてのhstoreタグを外部ファイルに抽出(コピー)して後処理する必要があります。キーと値はレコードごとに異なり、キーや値がわからないため、ワイルドカードを使用する必要があります。

残念ながら、私の秘密のデコーダリングは私を失望させたようです。私が試したものは何も機能しなかったためです。おそらく、私の専門知識はすべてVanilla sqlとmysql/mariadbにあるためです。

これを助けてくれてありがとう。

2
MMacD

これを行うための関数があり、 hstore拡張 でサポートされています。正確なニーズに応じて、akeys()またはskeys()を使用できます。テーブルのIDとキーのコンマ区切りリストを含むファイルに抽出する場合:

SELECT your_id, array_to_string(akeys(hstore_column))
FROM your_table;

この場合も、必要に応じて、これをCOPY(またはpsqlでは\copy)コマンドを使用するか、お気に入りのクライアントを使用して出力を抽出します。

2
dezso

skeys関数を探しています:

select skeys(hstore_column)
from the_table;

各キーの値も必要な場合:

select (a).key, (a).value
from (
  select each(hstore_column) as a
  from the_table
) t;

マニュアルの詳細: http://www.postgresql.org/docs/current/static/hstore.html