2012-12-14 10 views
9

पूर्णांक पूर्णांक से स्तंभ डेटा प्रकार बदल कृपया सरणी पूर्णांक प्रकार पूर्णांक के एक स्तंभ संशोधित करने के लिए मदद:PostgreSQL - सरणी

मैं प्रकार पूर्णांक के एक स्तंभ content_id के साथ एक मेज बनाया था।

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

सादर,

श्रावण

उत्तर

16

इस (स्तंभ test_id प्रकार पूर्णांक की है से पहले बदलने जगह लेता है) का प्रयास करें: फिर मैं content_id(integer)integer[](integer array) लिए लेकिन इसके दिखा त्रुटि बदलने के लिए के रूप में प्रदर्शित करने की कोशिश की। PostgreSQL 8.4।

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

आप दूसरी दिशा को कैसे बदलेंगे? INTEGER [] INTEGER करने के लिए? कहें, उदाहरण के लिए, मैं केवल पहले तत्व को संरक्षित करना चाहता हूं। – thedouglenz

+0

पहले तत्व का उपयोग करके वापस माइग्रेट करने के लिए कुछ ऐसा होगा: '' 'वैकल्पिक तालिका test.test_id ALTER COLUMN test_id प्रकार INTEGER 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

यदि आपको एन-आयामी सरणी मिलती है (और वह नहीं चाहता है) अद्यतन तालिका सेट colum = array (unnest (कॉलम) से ई चुनें (ई)); – Fotoncito

+0

सिवाय इसके कि यह मेरे लिए काम नहीं करता है। लेकिन कृपया हमें अपनी अंतर्दृष्टि से उजागर करें? – Fotoncito