반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ intelliJ IDEA 2021.3.1 (Community Edition)

    ˙ spring initializer (Gradle)

        - 참고) https://languagestory.tistory.com/136

 

SpringBoot 프로젝트 생성 및 MySQL 연동 설정

1. 시험환경 ˙ 윈도우 10 ˙ MySQL 8.0 Win x64 ˙ intelliJ IDEA 2021.3.1 (Community Edition) ˙ spring initializer (Gradle) 2. 목적 ˙ spring initializer(https://start.spring.io)를 통해서 Spring Boot..

languagestory.tistory.com

 

2. 목적

    ˙ spring.jpa.show-sql와 spring.jpa.properties.hibernate.format_sql 설정으로 SQL 로그를 출력한다.

    ˙ @Entity 컴포넌트 및 spring.jpa.hibernate.ddl-auto 설정에 의해 "Table 자동" 생성한다.

    ˙ data.sql 및 spring.datasource.initialization-mode와 spring.jpa.defer-datasource-initialization 설정에

         의해  data를 자동 import한다.

 

3. 적용

    ① application.properties 설정값

1
2
3
4
5
6
7
8
9
10
11
# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sample
spring.datasource.username=root
spring.datasource.password=1q2w3e
 
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialization-mode=always
spring.jpa.defer-datasource-initialization=true
cs

 

    ② SQL 쿼리 로그 출력 설정

        - spring.jpa.show-sql=true : Runtime 콘솔 화면에 SQL 쿼리문을 나타낸다.
        - spring.jpa.properties.hibernate.format_sql=true : Runtime 콘솔 화면에 나타나는 SQL 쿼리문을 pretty하게 나타낸다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2022-02-23 17:50:03.079  INFO 17388 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-02-23 17:50:03.346  INFO 17388 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-02-23 17:50:03.377  INFO 17388 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
Hibernate: 
    
    drop table if exists world
Hibernate: 
    
    create table world (
       id bigint not null auto_increment,
        lang varchar(255),
        money varchar(255),
        nation varchar(255),
        population integer not null,
        primary key (id)
    ) engine=InnoDB
2022-02-23 17:50:04.051  INFO 17388 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-02-23 17:50:04.051  INFO 17388 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
cs

 

    ③ @Entity 컴포넌트를 스캔하여, 서버 실행 시 Table "자동 생성" 및 서버 종료 시 Table "자동 삭제"한다.

        - spring.jpa.hibernate.ddl-auto=create-drop

        - 설정값에 따라 생성, 수정, 삭제 등이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.database.connection.entity;
 
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
 
@Getter
@Setter
@ToString
@Entity
public class World {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    private String nation;
    private String lang;
    private String money;
    private int population;
}
 
cs

 

    ④ "src/main/resources/data.sql"에 Import 데이터를 작성하면, 서버 실행 시 자동으로 실행된다.

        - spring.datasource.initialization-mode=always
        - spring.jpa.defer-datasource-initialization=true

1
2
3
4
5
6
insert into `world` (`nation``lang``money``population`)
values
('Republic of America''English''dollar'500),
('England of United Kingdom''English''found'50),
('Spain''Spanish''euro'40),
('Thailand''Thailian''bat'200);
cs

 

4. 결과

    ˙ 서버 실행 시, Table이 자동생성되고 데이터가 Import된 것을 확인할 수 있다.

 

    ˙ 서버 실행 시, 자동 생성된 Table이 삭제된 것을 확인할 수 있다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ intelliJ IDEA 2021.3.1 (Community Edition)

    ˙ spring initializer (Gradle)

        - 참고) https://languagestory.tistory.com/136

 

SpringBoot 프로젝트 생성 및 MySQL 연동 설정

1. 시험환경 ˙ 윈도우 10 ˙ MySQL 8.0 Win x64 ˙ intelliJ IDEA 2021.3.1 (Community Edition) ˙ spring initializer (Gradle) 2. 목적 ˙ spring initializer(https://start.spring.io)를 통해서 Spring Boot..

languagestory.tistory.com

 

2. 목적

    ˙ Spring Boot 신규 생성후 intelliJ에서 처음 시작시 발생 오류를 해결 한다.

1
2
3
4
5
6
7
Execution failed for task ':ConnectionApplication.main()'.
> Process 'command 'C:/Program Files/Java/jdk-17.0.2/bin/java.exe'' finished with non-zero exit value 1
 
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
cs

 

3. 적용

     신규 생성한 SpringBoot 프로젝트를 intelliJ에서 최초 실행시, 설정 에러가 발생할 수 있다.

        - 서버 실행 단축키 : <Shift> + <F10>

 

     "File" 메뉴 → "Settings..." 하위 메뉴를 클릭한다.

 

     <Build, Execution, Deployment> → <Build Tools> → <Maven> → <Gradle> 세팅을 변경한다.

        - Build and run using : IntelliJ IDEA

        - Run tests using : IntelliJ IDEA

 

4. 결과

    ˙ SpringBoot 프로젝트를 재실행하면 설정 에러가 재현되지 않는 것을 확인할 수 있다.

        - 서버 실행 단축키 : <Shift> + <F10>

 

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ MySQL 8.0 Win x64

    ˙ intelliJ IDEA 2021.3.1 (Community Edition)

    ˙ spring initializer (Gradle)

 

2. 목적

    ˙ spring initializer(https://start.spring.io)를 통해서 Spring Boot 신규 프로젝트를 생성한다.

    ˙ MySQL 연결을 위해 application.properties를 설정한다.

 

3. 적용

    ① Spring Boot 프로젝트를 생성한다. (GENERATE)

        - URL : https://start.spring.io/

 

 

    ② 생성된 프로젝트 파일의 압축을 해제하고, intelliJ 개발도구에서 Open하여 빌드(Build) 한다.

 

    ③ application.properties에서 MySQL 연결을 위한 정보를 입력한다.

        - 의존성 라이브러리에 'mysql:mysql-connector-java'가 추가된 경우, 반드시 연결 설정을 해야한다.

1
2
3
4
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sample
spring.datasource.username=root
spring.datasource.password=1q2w3e
cs

 

4. 결과

    ˙ 서버를 실행하여 프로젝트 시작 및 DB Connection을 확인한다.

        - 서버 실행 단축키 : <Shift> + <F10>

        - 'mysql:mysql-connector-java' 의존성 라이브러리 추가 후 연결 설정을 하지 않으면 실행 시 에러가 발생한다.

 

반응형
반응형

1. 시험환경

    ˙ MySQL 8.0.22 win x64

    ˙ Workbench 8.0.22

 

2. 목적

    ˙ 수GB 이상의 대용량 덤프 파일(.sql)을 DB에 Import하는 작업 도중 발생한 에러를 해결한다.

    ˙ MySQL 설정파일(my.ini)에서 max_allowed_packet 파라미터 값을 설정하는 방법을 알아본다.

 

3. 적용

    ① MySQL 설정 파일을 메모장에서 관리자 권한으로 Open한다.

        - ProgramData 폴더는 숨겨진 폴더이므로 탐색기에서 "숨긴 항목" 옵션을 켜야 볼 수 있다.

        - my.ini 기본경로 : C:\ProgramData\MySQL\MySQL Server 8.0

 

my.ini 경로

 

    ② max_allowd_packet 값을 기본값 4M 보다 큰값으로 변경하고 저장한다.

설정값 변경

 

    ③ 윈도우 검색창에서 "서비스" 앱을 실행한다.

 

 

    ④ "MySQL80" 서비스를 찾아서 더블 클릭한다.

 

    ⑤ "반드시" DB 서비스를 재시작해주어야 설정파일(my.ini)의 수정값이 적용된다.

서비스 재시작

 

4. 결과

    ˙ 대용량 덤프 파일(.sql)을 DB에 Import하는 작업을 다시 시도하여 발생한 에러가 재발되는지 확인한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ Visual Studio 2015 Community (x32)

 

2. 목적

    ˙ Visual Studio에서 C Style로 DLL(Dynamic Link Library) 를 생성한다.

    ˙ 생성한 DLL을 Import하고 사용하는 방법을 확인한다.

 

3. 적용

    ① DLL(Dynamic Link Library)을 만들기 위한 프로젝트를 생성한다.

        - Project : Win32 Consol Application

        - Name : dllExportExample

 

    ② Application Setting을 설정한다.

        - Application type: DLL

        - Additional options: Empty project

 

    ③ header 파일을 생성하여 DLL Export 함수를 선언한다.

        - 파일명 : dllExport.h

1
2
3
4
5
6
7
8
#pragma once
#include <stdio.h>
 
#define DLLEXPORT extern "C" __declspec(dllexport)
 
DLLEXPORT void exampleFunc();
DLLEXPORT void exampleFuncParam(int num1, int num2);
 
cs

 

    ④ header 파일에서 선언한 DLL Export 함수 동작을 정의한다.

        - 파일명 : dllExport.cpp

1
2
3
4
5
6
7
8
9
#include "dllExport.h"
 
DLLEXPORT void exampleFunc() {
    printf("exampleFunc()\n");
}
 
DLLEXPORT void exampleFuncParam(int num1, int num2) {
    printf("%d + %d = %d\n", num1, num2, num1 + num2);
}
cs

 

 

    ⑤ 프로젝트를 컴파일 성공 후 생성 파일을 확인한다.

        - 컴파일 단축키 : <Ctrl> + <F7>

        - 생성파일 : [프로젝트명].lib, [프로젝트명].dll 등

컴파일 성공

 

DLL 파일 생성


    ⑥ 생성된 DLL을 Import 및 사용하기 위한 프로젝트를 생성한다.

        - Project : Win32 Consol Application

        - Name : dllImportExample

 

    ⑦ Application Setting을 설정한다.

        - Application type: consol application

        - Additional options: Empty project

 

    ⑧ DLL Export 프로젝트에서 생성한 Header 파일을 포함(include) 시킨다.

        - 파일명 : dllImport.cpp

        - 포함시킨 "사용자 header 파일"의 경로를 지정하지 않았으므로, 코드 입력화면에서 에러 표시가 나타남을 주의한다.

        - 포함시킨 "사용자 header 파일"의 경로를 프로젝트 설정에서 추가한다.

 

    ⑨ Export 프로젝트에서 생성된 LIB 경로 및 파일명을 프로젝트 설정에 추가한다.

        - Linker → General → Additional Library Directories : LIB 경로 입력

        - Linker → Input → Additional Dependencies : LIB 파일명 입력

의존성 LIB 경로 입력

 

의존성 LIB 파일명 입력

 

    ⑩ Export 프로젝트에서 생성된 DLL 파일을 사용하고자하는 프로젝트에 복사한다.

 

4. 결과

    ˙ 컴파일 및 실행결과를 확인한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.8

    ˙ MySQL v8.0.23 (x32)

 

2. 목적

    ˙ pymysql 파이썬 라이브러리를 이용하여 DB Connection 생성한다.
    ˙ 생성된 DB Connection을 종료한다.

 

3. 적용

    ① pip를 이용하여 pymysql 라이브러리를 설치한다.

        - pip install pymysql

 

    ② mariadb 라이브러리를 import하고 connection 생성 및 종료 코드를 작성한다.

        - 파일명: mysqlDbQuery.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
import pymysql
 
 
def mysqlDbConnection(u, pw, h, p, d):
    try:
        conn = pymysql.connect(user = u, password = pw, host = h, port = p, database = d)
        print("DB Connection Success: {0}".format(h))
    except pymysql.Error as e:
        print("Error connecting to MySQL Platform : {}".format(e))
        sys.exit(1)
 
    return conn
 
 
def mysqlDbClose(_dbConn):
    try:
        _dbConn.close()
        print("DB Close Success")
    except pymysql.Error as e:
        print("Error closing from MySQL Platform")
        sys.exit(1)
cs

 

    ③ 테스트 코드를 작성하여 DB Connection 생성 및 종료 동작을 확인한다.

        - "mysqlDbQuery.py"를 import하고 mysqlDbConnection()과 mysqlDbClose()를 호출한다.

1
2
3
4
5
6
7
8
9
import csv
import mysqlDbQuery
 
 
dbConn = mysqlDbQuery.mysqlDbConnection('root''1q2w3e''127.0.0.1'3306'sample')
cursor = dbConn.cursor()
 
cursor.close()
mysqlDbQuery.mysqlDbClose(dbConn)
cs

 

 

4. 결과

    ˙ 프로그램을 실행하여 DB 연결 및 종료 동작을 확인한다.

연결 및 종료 성공

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.10

    ˙ mySQL 8.0.23 (x32)

 

2. 목적

    ˙ 파이썬 csv 라이브러리를 이용하여 csv 파일 데이터를 추출한다.

    ˙ 추출한 데이터를 pymysql 라이브러리를 이용하여 mysql DB에 저장한다.

 

3. 적용

    ① csv 데이터 파일 및 구조이다.

sample.csv
0.00MB

 

    ② mysql 스키마 및 테이블을 생성한다.

        - DB 스키마 : sample

        - 테이블명 : example

1
2
3
4
5
6
7
CREATE TABLE `example` (
  `nation` varchar(32) NOT NULL,
  `language` varchar(32) DEFAULT NULL,
  `money` varchar(32) DEFAULT NULL,
  `population` int DEFAULT NULL,
  PRIMARY KEY (`nation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
cs

 

    ③ pymysql 파이썬 라이브러리를 이용하여 mysql DB 연결 및 종료 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
import pymysql
 
 
def mysqlDbConnection(u, pw, h, p, d):
    try:
        conn = pymysql.connect(user = u, password = pw, host = h, port = p, database = d)
        print("DB Connection Success: {0}".format(h))
    except pymysql.Error as e:
        print("Error connecting to MySQL Platform : {}".format(e))
        sys.exit(1)
 
    return conn
 
 
def mysqlDbClose(_dbConn):
    try:
        _dbConn.close()
        print("DB Close Success")
    except pymysql.Error as e:
        print("Error closing from MySQL Platform")
        sys.exit(1)
cs

 

    ④ csv 파이썬 라이브러리를 이용하여 파일 데이터를 추출하고, mysql DB에 저장하는 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import csv
import mysqlDbQuery
 
 
dbConn = mysqlDbQuery.mysqlDbConnection('root''1q2w3e''127.0.0.1'3306'sample')
cursor = dbConn.cursor()
 
 
file = open('./sample.csv','r', encoding='UTF8')
fReader = csv.reader(file)
 
for line in fReader:
    query = "INSERT INTO example VALUES ('{0}', '{1}', '{2}', {3})".format(line[0], line[1], line[2], line[3])
    cursor.execute(query)
 
file.close()
 
dbConn.commit() 
cursor.close()
mysqlDbQuery.mysqlDbClose(dbConn)
 
cs

 

4. 결과

    ˙ 프로그램을 실행하여 csv 추출 데이터가 DB에 저장되었는지 확인한다.

    ˙ pandas와 달리 title까지 데이터로 추출되는 것에 주의한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.10

 

2. 목적

    ˙ 특정 폴더 안에 포함된 모든 파일 목록을 추출한다.

    ˙ 텍스트 파일 안에 세미콜론(;)으로 구분된 데이터를 읽는다.

 

3. 적용

    ① 폴더 및 파일 구조

        - ./sample/AAA.txt

        - ./sample/BBB.txt

        - ./sample/CCC.txt

sample.zip
0.00MB

 

    ② 특정 폴더에 저장된 모든 파일을 불러와서, 세미콜론(;)으로 구분된 각각의 데이터를 출력하는 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
 
dir_path = "./sample/"
fileList = os.listdir(dir_path)
print('fileList:', fileList)
 
for item in fileList:
    token = item.split('.')
    print('token:', token)
 
    file_dir_path = dir_path + item
    print('file_dir_path:', file_dir_path)
 
    file = open(file_dir_path, "r", encoding="utf-8")
    while True:
        line = file.readline()
        if not line:
            break
        cols = line.replace('\x00''').split(';')
        print(cols)
 
    file.close()
 
cs

 

4. 결과

    ˙ 프로그램을 실행하여 특정 폴더안에 저장된 모든 데이터를 파싱하는 것을 확인한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fileList: ['AAA.txt''BBB.txt''CCC.txt']
token: ['AAA''txt']
file_dir_path: ./sample/AAA.txt
['A001''173cm''57kg\n']
['A002''174cm''58kg\n']
['A003''175cm''59kg\n']
['A004''176cm''60kg\n']
['A005''177cm''61kg\n']
['A005''178cm''62kg']
token: ['BBB''txt']
file_dir_path: ./sample/BBB.txt
['b001''180cm''70kg\n']
['b002''181cm''71kg\n']
['b003''182cm''72kg\n']
['b004''183cm''73kg\n']
['b005''184cm''74kg\n']
['b006''185cm''75kg\n']
['b007''186cm''76kg\n']
['b008''187cm''77kg']
token: ['CCC''txt']
file_dir_path: ./sample/CCC.txt
['c001''190cm''90kg\n']
['c002''191cm''91kg\n']
['c003''192cm''92kg\n']
['c004''193cm''93kg\n']
['c005''194cm''94kg\n']
['c006''195cm''95kg\n']
['c007''196cm''96kg\n']
['c008''197cm''97kg\n']
['c009''197cm''98kg']
cs

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts