1

次のようなPostgreSQL9.1データベーステーブル(MyTableと呼びましょう)があります。

 gid | name | address | phone | colA | colB | colC | colD
------------------------------------------------------------
     |      |         |       |      |       |      |   

このデータベースhstoreで有効にしました:

 CREATE EXTENSION hstore;

ここで、hstore列(colH)を作成します。ここに、列colA colB colC colDを、キーの名前と値、値とともに格納します。

ALTER TABLE MyTable ADD COLUMN colH hstore;

では、hstore列に値を挿入するにはどうすればよいですか?INSERTが役立つと思いますが、その方法がわかりません。助けてください。

4

1 に答える 1

1

挿入は、既存の行の列を変更するのではなく、新しい行を作成するために使用されます。

updatehstore列を追加した後に使用する必要があります。

update mytable
   set colh = hstore('cola', cola)||hstore('colb', colb)||hstore('colc', colc)||hstore('cold', cold);

または-少しコンパクト:

update mytable
    set colh = hstore(array['cola','colb','colc','cold'], array[cola,colb,colc,cold]);

これは、コーラ、コルブ、コルク、コールドがタイプtextまたはvarcharであることを前提としています。そうでない場合は、適切にキャストする必要があります。

その後、不要になった列を削除できます。

于 2013-01-28T07:32:34.407 に答える