라벨이 postgresSQL인 게시물 표시

PostgreSQL Column(컬럼)의 속성을 배열로 하고 생성, 조회, 수정, 삭제하기

이미지
 postgres의 컬럼 설정에서는 배열을 넣을수가 있다.  컬럼을 생성할때 위 사진처럼 컬럼 arr을 숫자형 배열로 지정할수 있다 하나의 레코드를 삽입하면 위 사진처럼 id및 arr이 배열로 저장되게 된다. 이때 동일한 배열을 찾을때 WHERE을 이용하여 찾는다. 하지만 모든 배열을 아는것이 아니면 위방법으로 레코드를 조회할수 없다. arr을 텍스트로 변환한 다음 LIKE을 이용하여 조회를 해야 합낟. 이때 arr은 배열에서 문자열로 조회할때만 전환된다. 문자열 배열또한 만들수 있다. 문자열 배열또한 생성, 수정 삭제, 조회가 가능하며 LIKE을 사용할려면 조회할 배열을 text로 변환후 확인해야 한다.

에러해결(Error) PostgresSQL의 컬럼 string을 데이터 초기화 없이 integer로 변경

이미지
 안녕하세요. 알렉스 입니다. 이번에 업무를 보다가 해결한 문제를 블로그 글로 작성할려고 합니다. 예전에 가격을 'VARCHAR'로 지정해서 그것을 모두 'Integer'로 변경해야 했습니다. 그런데 이때 데이터의 변환 없이 그대로 바꿔야 했죠.  입력되어있는 데이터는 모두 숫자로 구성된 문자로 단순히 문자를 숫자로 변환해주면 되는 것이였습니다. 사진1) payment table 현재 테이블에서 gamePrice가 있는데 종류가 'character varying'으로 되어있습니다. 즉 'VARCHAR'로 되어 있는 것입니다. 사진2) 2개의 record 사진2에서 2개의 레코드가 DB에 저장된 것을 알수 있습니다. 이제 보통 column의 속성을 바꿀때 쓰는 sql문을 사용해 보겠습니다. 1. Table의 column속성을 변경하기 - 해당 컬럼속성을 변경합니다. 아래는 VARCHAR속성에서 INTEGER로 변경하는 것입니다. ALTER TABLE payment ALTER COLUMN "gamePrice" TYPE integer; copy 예상대로 integer로 전환이 안된다고 나옵니다. 그런데 여기서 힌트가 있는데 "USING "gamePrice"::integer"를 쓰라고 하네요. 이걸 추가해서 사용하도록 하겠습니다. 2. Table의 column속성을 변경하기(기존 데이터 유지) - 해당 컬럼속성을 변경합니다. 아래는 VARCHAR속성에서 INTEGER로 변경하는 것입니다. ALTER TABLE payment ALTER COLUMN "gamePrice" TYPE integer USING "gamePrice"::integer; copy      사진4) 변경되지 않은 record 위 사진 3,4를 보면 column값이 성공적으로 VARCHAR -> INTEGER로 변경...