Jost Do It.

그냥 IT해.

반응형

Database 4

[Python] upsert문 간접 구현하기

문제 상황 관계형 데이터베이스에 테이블에는 중복 방지와 무결성을 위해 primary key를 설정한다. 이 때 primary key를 설정하면 primary key 값이 중복된 데이터들은 업로드할 수 없다. 보통 SQL문에서는 중복된 데이터인 경우 INSERT INTO ... ON CONFLICT ... 구문을 통해 데이터를 덮어쓸 수 있다. 하지만 pd.to_sql 함수의 경우 데이터 업로드 시 해당 기능이 구현돼 있지 않아 다음 코드를 작성했다. 해결 방법 함수의 동작방식을 다음과 같이 하여 upsert를 간접 구현하였다. 간단히 말하면 pk 중복 데이터를 제거하고 다시 insert하는 방식으로 완전한 upsert는 아닐 수 있다. 1. 시스템 테이블에서 해당 테이블의 primary_key 이름 찾기..

Programming/Python 2024.02.05

[클릭하우스] config 세팅 정보 변경 및 확인

문제 상황 보통 클릭하우스 configuration 파일(config.xml)에서 변수를 변경하면 자동으로 반영이 되지만 xml 파일을 함부로 수정하기엔 문제가 발생할 수 있어 쉽지 않다. 따라서 직접적인 xml 파일 수정 없이 클릭하우스 config를 변경하고, 반영이 잘 되었는지 확인할 방법이 필요했다. 해결 방법 클릭하우스 클라이언트를 이용해 설정할 수 있다. 먼저 클릭하우스 클라이언트의 옵션 정보들을 아래 명령어로 출력할 수 있다. clickhouse-client --help 이를 출력해보면 아래처럼 다양한 옵션을 설정할 수 있는 것을 확인할 수 있다. Main options: --help produce help message -V [ --version ] print version informat..

[PostgreSQL] 쌍콜론 (::, double colon) 의 의미와 CAST 함수

최근 인수인계 받은 코드를 정리 중인데, SQL문에 처음보는 쌍콜론이 있어서 내용을 정리한다. 우리회사에서는 postgreSQL을 사용 중인데, postgreSQL에서는 쌍콜론이 CAST와 같은 역할을 한다고 한다. 바로 예시와 함께 알아보자. 코드는 아래의 예시처럼 되어있었다. SELECT 1.2::integer 코드를 통해 유추 가능하듯이, 어떤 표현식(값, 칼럼, 표현 등)의 데이터 타입을 쌍콜론 뒤에 타입으로 변형해주는 내용이다. 위 코드에서는 1.2의 값을 integer로 표현하게 된다. 1.2는 float형인데 이를 정수형인 integer로 변환해 표현하기 때문에 결과 값은 1로 출력된다. CAST를 써서 위 코드를 표현하면 다음과 같다. SELECT CAST(1.2 AS integer) 결과..

[Oracle] Database 연결 시 발생하는 에러 종류

이번에 회사를 이직하면서 Oracle database에 연결할 일이 생겼다. 나는 오픈소스 기반의 DBeaver가 편해서 해당 소프트웨어로 보통 데이터베이스를 연결하는데, 연결하면서 몇가지 에러가 발생해 이를 정리하려 한다. 0. 연결 과정 먼저 DBeaver에서 Oracle DB 연결을 위해 아래 과정을 진행한다. (1) 새 데이터베이스 연결을 클릭 (2) 화면에서 Oracle 항목을 선택하고 다음을 클릭 (3) 서버 정보를 입력 Host: 서버(IP) 주소 Port: DB의 포트번호 (Oracle DB의 경우 default는 1521이다). Databse: 데이터베이스 이름 (이름 default는 ORCL이다). Service Name / SID: DB를 단일 인스턴스로 구성할 때는 SID로, 여러 ..

반응형