본문 바로가기

전체 글38

[MSSQL] 저장 프로시저 생성 및 수정과 실행 - 프로시저 생성 CREATE PROC [프로시저명] [파라미터 이름] [파라미터 타입] AS [프로시저 구문] ex) CREATE PROC dbo.proc1 @NUM INT, @STRING VARCHAR(100) AS SELECT @NUM, @STRING - 프로시저 수정 ALTER PROC [프로시저명] [파라미터 이름] [파라미터 타입] AS [프로시저 구문] - 프로시저 실행 EXEC [프로시저명] [파라미터값], [파라미터값] ex) EXEC [dbo].[proc1] 10, '마스크' 수정, 삭제 구문에서 PROC은 PROCEDURE로 써도 가능하다. 2020. 4. 27.
[MSSQL] CSV 파일 생성 및 문제 해결 방법 MSSQL에서 CSV 파일 생성 방법은 크게 3가지가 있다. 1. SSMS, 즉 툴을 이용하여 생성 2. Bulk문 사용 3. bcp cmdshell 사용 1번은 수 많은 작업이 주기적으로 필요 할 시 일일이 사람이 클릭해서 만들어야되므로 매우 번거롭다. 하지만 간단한 테스트로는 사용하기 가장 편하다. 2번은 로컬환경에서만 가능하다. 대부분 토이 프로젝트나 연습용이 아니라면 DB서버는 별개로 있을 것이다. 따라서 사용하기 힘들다. 3번은 다른 서버도 접근이 가능하지만 권한이 필요하다. 권한만 있다면 CSV파일 생성 뿐만 아니라 수많은 작업이 가능하기에 매우매우 조심해야된다. bcp의 여러 기능 중 CSV 파일 생성 방법이다. EXEC master..xp_cmdshell 'bcp "[select문]" qu.. 2020. 4. 27.
[PSQL] COPY 작업 시 유용하게 사용했던 명령어 및 설정 앞서 포스팅한대로 COPY작업 자체는 잘 된다. 하지만 생각지도 못한 부분에서 많은 문제가 발생했다. 1. 한글깨짐 역시나 한글 깨짐 방지는 필수인것 같다. copy 실행 전 SQL Shell의 인코딩을 UTF-8로 변경하면 된다. set client_encoding to 'UTF8'; 2. 구분자 문제 나 같은 경우는 MSSQL에서 데이터를 CSV로 생성 후 PSQL에서 COPY했다. 이때 구분자를 ,을 이용하였는데 데이터 안에 해당 구분자가 들어 있다면 데이터의 , 마저도 구분자로 인식하여 데이터를 컬럼단위로 잘라버렸다. 즉 원래 컬럼이 10개라면 11개가되는 현상이 발생, 정상적으로 실행이 안된다. 이전 포스팅에서 설정한 delimiter 옵션을 이용하여 구분자를 \t, ; 등 상황에 맞게 변경해서.. 2020. 4. 27.
[PostgreSQL] COPY 사용 불가 (SQL Error 42501) 대용량 데이터 복사 시 CSV파일 형태로 저장 후 COPY 명령어를 통해 읽어온다. 하지만 PostgreSQL에서 COPY를 사용하면 must be superuser to copy to or from a file 이라는 에러와 함께 실행되지 않는 경우가 있다. 에러를 보면 파일 접근 관련 권한 문제로 보이는데 로컬 환경에만 작업한다면 괜찮지만 따로 분리된 다른 서버의 DB 사용 시 파일 접근 권한 문제를 마음대로 변경할 수 없다. 따라서 다른 방법을 찾아야만 했는데 다행히 에러문구 밑에 힌트가 적혀있었다. Hint : Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone. 즉, psql의 \copy를 사용하면.. 2020. 4. 27.
Spring Boot의 application.propertise 또는 yaml Spring Boot의 application.propertise 또는 yaml에 설정하다보면 자동완성이 되는 것을 많이 보았을 것이다. 지금까지는 스프링 부트에서 제공해주는 편리한 기능이겟지 하고 넘어갔었는데 얼마 전 스터디를 진행 하면서 코드를 까보니 propertise에 ConfigProperties가 연결되어 있고 클래스로 만들어져 있었다. 이를 이용하여 @Value(${spring.redis}) 같이 spel문을 사용하지 않고 해당 클래스를 의존성 주입받아 훨씬 간결하게 코드 작성이 가능했다. 2020. 4. 23.
[MSSQL] OPENQUERY 대용량 DML 작업 시 문제점 OPENQUERY를 이용하여 POSTGRESQL에 DELETE 및 INSERT 작업을 진행하였다. 적게는 수천건부터 많게는 수백만건 작업을 해아하는데 어째서인지 만건만 넘어가도 서버가 뻗어버렸다. 그 원인은 바로 OPENQUERY의 메커니즘에 있었다. 예를 들어 DELETE FROM MEMBER 가 있다고 가정하면 그냥 POSTGRESQL에서 실행 시 MEMBER의 ROW 수 만큼 삭제되는데 실행계획을 보면 1 EXCUTE된다. 하지만 OPENQUERY 실행 시 ROW 수 = EXCUTE 수가 된다. 즉 하나를 삭제할 때 마다 모든 테이블을 읽어온다는 뜻이다. INSERT도 마찬가지로 INSERT 작업 후 SELECT문을 실행시켜 모든 데이터를 한번 얻어온다고 한다. 직접 확인은 못했지만 아래 링크를 확.. 2020. 4. 22.