개발공작소
article thumbnail
728x90

글이 길다. 성격이 급한 사람을 위해,

1. 테이블의 SQL 파일 생성

2. 터미널의 psql 접속

3. \i 명령어를 통해 SQL파일 실행

\i [실행 할 SQL파일]

============================================================================

 

보통 DBeaver 등 툴을 사용하지만, 그러지 못할 때 우리는 터미널을 통해서 데이터를 조회, 삽입 등을 한다.

예를 들면, A라는 테이블에 INSERT문을 날려야 하는데, 예전에는 이렇게 했었다.

샘플테이블로 COMTNWEBLOG을 사용하였다.

 

데이터 갯수 196만개..

COMTNWEBLOG 테이블에는 약 196만개의 테이블이 있다... 이 196만개의 데이터를 터미널을 통해

다른 테이블에 넣으려면? 2가지 방법이 있다.

 

1. 직접 해당 테이블의 DDL문을 복사 하여 터미널에서 쿼리문을 날리는것.

2. SQL파일을 추출하여 터미널 명령어로 SQL 파일을 실행하는 것.

 

1. DDL 복사 밑 터미널에 붙여넣기

원하는 테이블의 데이터를 전부 드래그 하여, 우클릭 -> SQL 생성 -> INSERT 를 누르면 위와 같은 창이 나오는데

저거 전부 복사해서 그대로 터미널에 붙여넣기 하는방법이다.

처음에는 이 방법을 주로 사용했었는데, 데이터가 점점 많아지다보니, INSERT문을 넣는 도중에 에러(?)는 아니지만

문제가 발생했다.

데이터를 넣다가 쿼리문이 꼬여서 넣어지지 않던 것.. 원인은 모르겠지만 아마 데이터가 많아서 그랬지 않나 싶다.

 

그래서 데이터가 많아지면 사용하게 된 방법이 2번째 방법이다.

 

2. 터미널 명령어를 통한 SQL파일 실행

 

우선 원하는 테이블을 선택한다. 그 뒤 테이블을 우클릭하여 데이터 내보내기를 클릭한다.

데이터 내보내기

그럼 아래와 같은 창이 나오는데 SQL파일을 선택하여 내보내면 된다.

 

따로 설정은 건들 지 말고 계속 다음을 눌러 진행을 하면 SQL파일이 생성된다.

 

생성 된 SQL파일

그럼 이제 터미널을 켜 DB에 붙는다.

 

cmd에서 psql문으로 붙는 건 블로그에 따로 글이 있으니, 확인해볼 것.

기본 명령어는 이렇다.

\i [실행 할 SQL파일]

저 위에 SQL파일 앞에 경로를 써줘도 작동 하는데, 내 C드라이브는 권한이 막혀 있어서 안됬다..

원래는 저렇게 해도 된다.

 

------2024.04.22 추가 사항-----------------------------------------------------------------------------------------------------------------------------

 

권한이 없다며 \i 명령어가 안먹은 경우 백슬래쉬 대신 그냥 슬래쉬를 쓰면 된다.

 

예시

\i C:\Users\BONG\temp.sql => X

\i C:/Users/BONG/temp.sql => O

 

이게 리눅스 환경에서는 백슬래쉬를 쓰는데, 윈도우 환경에서는 안된다는 거 같다..

 

 

------2024.04.22 추가 사항-----------------------------------------------------------------------------------------------------------------------------

 

 

어쨌든 저렇게 입력을 하니, 아래와 같이 INSERT가 잘 된다~

 

이게 복사 붙여넣기 보다 간편한 거 같다. 특히 데이터가 엄청 많을 때.. 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!