프로그래밍 언어/DB
[MySQL] MySQL에 csv 파일 INSERT 하기
MySQL에 csv 파일에 있는 데이터를 INSERT 하고자 한다. 데이터 가져오기 데이터를 넣고자 하는 테이블 우클릭 후 데이터 가져오기 선택 csv 에서 가져오기 선택 후 다음 클릭 다음선택 후 csv 파일 선택 csv 파일에서 해당 테이블에 어떤 컬럼값으로 매핑해서 넣어줄지 선택 csv 파일을 만들때 컬럼명이랑 동일하게 해도 되고 Target 에서 적용하고자 하는 컬럼을 선택해도된다. Mapping에 create 가 나온다면 새로운 컬럼이 생기면서 추가된다. 만약 테이블 컬럼의 변경 없이 데이터만 넣고 싶다면 create 라는 내용이 있으면 안된다. 위의 내용을 다 하면 데이터가 들어가 있는 것을 확인할 수 있다.
[MySQL] 데이터 null 을 0 으로
DB 데이터 조회 시 null 인 값을 0으로 변환하고자 한다. 조회할 때만 null 을 0으로 바꾸는 방법이다. select COALESCE(h.point, 0) from history h ; 실제 DB에 데이터를 null 을 0으로 수정하는 방법이다. update history set refund_point = 0 where refund_point is null;
[sql] functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
잘못된 쿼리를 사용해서 생기는 오류이므로 서버 설정보다 쿼리로 해결할 수 있도록 하는게 좋다. 쿼리로 해결하기 쿼리 상의 GROUP BY 절을 따로 분리해 준다. 서버 설정으로 해결하기 MySQL 실행 시 only_full_group_by 옵션의 활성화/비활성화를 비활성화 한다. 1. mysql 설정 상태 확인 > select @@sql_mode; 2. mysql 설정이 되있음을 확인 (아래 출력 처럼 only_full_group_by이 나오면 설정이 필요) > | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 3. my...
[mysql] Failed to determine a suitable driver class
spring 에서 db 를 사용하는데 아래와 같은 메리지가 나오면서 db 연결이 안되고 빌드되지 않았다. 에러 메시지 해결방법 application.yml 파일에 mysql 드라이브가 추가 되어 있는지 확인하고 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver build.gradle 에 mysql 를 추가해준다. implementation 'mysql:mysql-connector-java:8.0.30' 버전은 아래 링크에서 확인할 수 있다. maven repository https://mvnrepository.com/artifact/mysql/mysql-connector-java
MySQL EXPLAIN 실행 계획 보기 (쿼리 최적화 하기)
사용이유 MySQL 쿼리를 실행할 때 최적화 계획을 세운다. 이러한 계획은 실행계획이라고 하는데 Explain 키워드를 사용해 실행계획에 대한 정보를 확인할 수 있다. 실행계획을 통해 문제가 발생하는 쿼리문을 이해하고 어떻게 최적화할지에 대한 인사이트를 제공하는 도구가 될 수 있다. 사용법 select문 앞에 explain 을 붙여서 사용한다. EXPLAIN SELECT * FROM table_name EXPLAIN SELECT * FROM table_name WHERE table_no = 1 explain을 사용해 쿼리문을 실행하면 아래 이미지와 같은 컬럼을 확인할 수 있다. 컬럼 설명 id : 쿼리 안에 있는 각 select 문에 대한 순차 식별자이다. 만약 하나의 select 문에서 여러 개의 테이..
[PostgreSQL] 중복 데이터 하나만 남기고 삭제하기 delete
중복 데이터 확인 셀프 조인을 통해 중복된 행의 id값을 확인하는 방법이다. id가 제일 작은 값으로 사용한다. 근데 아래와 같은 명령어를 사용하면 데이터가 중복되어 좀 더 많이 보이는 현상이 있긴하다. schemas 에 본인이 사용하는 스키마 이름 tablename 에는 테이블 명을 입력해준다. select s1.* from schemas.tablename s1 join schemas.tablename s2 on s1.title = s2.title and s1.link = s2.link where s1.id > s2.id; 중복 데이터 삭제하기 sql문으로 데이터 삭제하기에 대해 검색하면 row_number 를 사용해 partition by로 중복된 컬럼을 지정하고 row_num>1 을 설정해 삭제할 ..
postgresql 한글 포함 여부 확인하기
postgresql 에서 한글을 포함한 데이터와 한글을 포함하지 않은 데이터를 추출하고자 한다. 한글을 포함한 데이터는 아래 쿼리문으로 사용하면된다. 자음까지도 확인하고 싶을때는 [ㄱ-힣] 로 사용하면된다. select * from tablename where column ~ '[0-9]+' and column similar to '%[가-힣]%' 한글을 포함하지 않은 데이터는 ^ 를 붙여서 사용한다. select * from tablename where column ~ '[0-9]+' and column similar to '%[^가-힣]%'
postgresql log 확인하기
postgresql 을 사용하다가 에러때문에 로그를 확인해야했다. 먼저 postgresql 이 설치되어 있는 경로로 들어간다. 경로가 기억나지 않으면 psql 로 접속해 아래 명령어로 경로를 확인할 수 있다. show data_directory; 혹은 아래 명령어가 있는 파일로 이동하면 로그파일의 위치를 찾을 수 있다. find / -name postgresql.conf 나의 경우 아래의 경로에서 로그를 확인할 수 있었다. /var/lib/pgsql/11/data/log ls 로 파일에 있는 내용을 보면 요일별로 로그가 저장되어 있는것을 확인할 수 있다.
DBeaver 에서 DB 데이터 내보내기
DBeaver 에서 DB 데이터를 내보낸 후 다른 곳에 불러와서 사용해보고자 한다. 데이터를 내보내고자 하는 테이블을 우클릭한 후 데이터 내보내기를 선택한다. 아래 옵션들 중 사용하고자 하는 타입을 선택하면 된다. 나의 경우 sql 로 내보낼 것이다. 다음을 누르면 아래와 같은 내용이 나오고 다음을 누르고 넘어간다. 아래 이미지에서 Directory 부분에는 sql 데이터를 저장하고자 하는 위치를 적어준다. file name pattern 에 있는 이름으로 저장이 된다. 다음을 누르면 저장하고자 하는 데이터의 마지막 확인 내용이 나온다.
mysql/postgresql 중복되는 데이터 항목 찾기
중복 데이터 찾기 mysql 에서 특정 컬럼에서 중복되는 항목이 있는지 찾고자 한다. 컬럼 하나일 때 select 컬럼이름 , count(컬럼이름) from 테이블이름 s group by 컬럼이름 having count(컬럼이름) > 1 컬럼 여러개일 때 select 컬럼이름1, 컬럼이름2, 컬럼이름3, count(컬럼이름1) from 테이블이름 s group by 컬럼이름1, 컬럼이름2, 컬럼이름3 having count(컬럼이름1) > 1 select title,date,site , count(title) from tablename s group by title ,date,site having count(title) > 1