저번 시간에 데이터 베이스 데이터 전체를 백업하고 복원하는 것을 해 보았습니다. 이번 시간에는 dbeaver에서 테이블을 내보내거나 백업을 하고, 다른 데이터베이스에 집어넣거나 복원하는 작업을 해 보도록 하겠습니다. 이런 시나리오를 생각해 보겠습니다. 로그인 한 지 1년이 지난 유저들의 개인 정보를 옮겨야 한다고 해 봅시다. 이 때, 민감한 정보들은 빼고 분리된 데이터 베이스에 옮긴다고 생각해 봅시다. 그런 경우, 휴대폰 번호와 같은 것은 옮겨지면 안 될 겁니다. 암호화를 하던지 해당 필드를 제외하고 보내야 할 것입니다. 이 중 후자의 방법으로 해 봅시다. 사실 이런 건 cron으로 돌려서 application 단에서 하겠지만, 이 글에서는 실습 해 보는 목적으로 진행하겠습니다. 먼저 postgres 데..
코딩/Sql 검색 결과
postgresql에서 insert, update, delete를 할 때 정말 insert, delete, update 등이 되었는지 알고 싶습니다. 쿼리를 실행한 결과를 가지고 오고 싶을 때 returning을 쓰는데요. 이를 통해서 불필요한 쿼리를 방지할 수 있습니다. 간단하게 예제를 보면서 알아보겠습니다. 먼저, c 테이블에 필드 a의 값이 11인 레코드를 추가합니다. 추가된 레코드(Row)를 리턴하는데요. 이 레코드에서 어떤 속성을 가져올 것인지를 적어주면 됩니다. 결과는 id가 11이 나왔습니다. 이는 id가 11인 Row가 추가되었다는 것을 의미합니다. 이제, returning id, a를 입력해 보겠습니다. 그러면 어떻게 나올까요? id가 12이고 a가 11이라고 하네요? 이는 속성 id가 ..
postgres에서 enum 타입을 알아봅시다. 예를 들어, 유저 등급을 저장할 때 사용할 수 있습니다. rate_type을 저장하려고 합니다. rate에는 'bronze', 'silver', 'gold' 등이 있어요. 우리는 type enum을 생성할 건데요. 브론즈, 실버, 골드를 열거한 타입으로 생성할 겁니다. 이런 류는 등급 뿐만이 아니라 파일 타입 등을 저장할 때에도 쓰일 수 있습니다. 타입을 생성하는 CREATE TYPE 명령어를 쓸 건데요. enum으로 생성할 것이니, CREATE TYPE ~ AS ENUM ~ 구문을 써서 생성해 보겠습니다. 위 구문은, 타입 rate_type을 'bronze', 'silver', 'gold'를 열거한 타입으로 선언하는 것입니다. 이제, Data types을..
간혹 가다가, postgresql에서 sql file에 있는 명령들을 실행시켜야 할 때가 있습니다. 예를 들어, custom 함수를 정의할 때라던지, 데이터들을 모두 import 할 때 등이 이에 해당되겠네요. 어떻게 하는지 알아보겠습니다. 먼저, app3 데이터베이스에 있는 테이블은 reply와 user입니다. user는 id가 4인 유저만 존재합니다. reply를 모두 얻어보겠습니다. 아무것도 없습니다. reply.sql은 Users의 chokw 밑에 있습니다. 이 문장은 그냥 reply 테이블에 id가 4인 유저가 "cd"라는 내용의 포스트와, 'ef"라는 포스트를 썼다는 정보를 추가합니다. psql 명령어는, -d 옵션을 주면 데이터베이스에 바로 접근이 가능합니다. 저는 postgres라는 유저로..
dbeaver에서 foreign key를 생성하는 방법을 알아보겠습니다. postgresql에 접속한 것이니 참고 부탁드립니다. 테이블 2개가 있습니다. user하고 reply입니다. user는 id와 username을 가지고 있어요. 다음에, reply는 id와 content를 가지고 있어요. 그런데 뭔가 빠진 듯한 느낌이 납니다. 댓글을 작성한 주체가 없단 말입니다. 댓글을 작성하는 주체는 user가 될 텐데요. 이 유저를 참조하는 foreign key를 만들어 보겠습니다. 먼저, 새로운 column을 추가해야 됩니다. user에서 id를 참조하기 위해, user_id라는 것을 새로 만들었습니다. Data type은 int4로 두었습니다. 여기서 중요한 정보 하나는, 유저의 id 값을 serial4로..
최근댓글