2012-12-14 12 views
9

を整数に整数から列のデータ型を変更しますPostgreSQLの - 親切配列を整数に整数型の列を変更するのに役立ち配列

私は整数型の列content_idでテーブルを作成していました。その後、私が表示されているようにinteger[](integer array)が、その示すエラーにcontent_id(integer)を変更しようとしました:

TestDatabase=# ALTER TABLE tbl_handset_content ALTER COLUMN content_id TYPE integer[]; 
ERROR: column "content_id" cannot be cast to type "pg_catalog.int4[]" 

よろしく、

Sravan

答えて

16

は(ALTERが行われる前に列test_idがINTEGER型である)、これを試してみてください。 PostgreSQL 8.4。

ALTER TABLE test.test_id 
    ALTER COLUMN test_id TYPE INTEGER[] 
    USING array[test_id]::INTEGER[]; 
+0

どのようにタイプを他の方向に変更しますか? INTEGER []からINTEGER?例えば、私は最初の要素を保持したいだけです。 – thedouglenz

+0

最初の要素を使用してマイグレートするには、次のようにします。 '' 'ALTER TABLE test.test_id ALTER COLUMN test_id TYPE INTEGER USING test_id [1] :: INTEGER;' ''配列はデフォルトで1インデックスになっています。 – GSP

2

これは私のためにうまくいった!

ALTER TABLE schema.table 
    ALTER COLUMN column 
    DROP DEFAULT; 
ALTER TABLE schema.table 
    ALTER COLUMN column TYPE INTEGER[] 
    USING array[column]::INTEGER[]; 
ALTER TABLE schema.table 
    ALTER COLUMN column SET DEFAULT '{}'; 
+0

n次元配列を取得した場合(その必要がない場合) update table set colum = array(unest(列)u(e)から選択); – Fotoncito

+0

それは私のために働かなかったことを除いて。しかし、あなたの洞察を教えてください。 – Fotoncito

関連する問題