반응형

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

 

 

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

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.8

    ˙ MS Office Pro 2019

    ˙ MariaDB 10.1 (x64)

 

2. 목적

    ˙ pandas 라이브러리를 이용하여 xlsx(엑셀 파일)을 읽어온다.

    ˙ pandas 라이브러리를 이용하여 읽어온 엑셀 파일의 특정 값(열,행)에 접근한다.

    ˙ 읽어온 엑셀 데이터를 MariaDB에 저장한다.

 

3. 적용

    ① pandas로 읽어 올 엑셀 파일(xlsx)을 준비한다.

        - 첫번째 행(row) : title

        - 두번째 행(row) 이후 : 데이터

sample.xlsx
0.01MB

 

    ② 데이터를 저장한 DB 테이블을 생성한다.

        - DB 스키마 : sample

        - 테이블명 : example

1
2
3
4
5
6
7
8
9
CREATE TABLE `example` (
    `nation` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
    `language` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
    `money` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
    `population` BIGINT(20) NULL DEFAULT NULL
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
 
cs

 

    ③ MariaDB Connection 생성 및 종료 코드를 작성한다.

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

 

    ④ 엑셀 파일(xlsx)을 읽어서 DB에 저장하는 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mariadbQuery
import pandas as pd
 
 
dbConn = mariadbQuery.mariaDbConnection('root''1q2w3e'"127.0.0.1"3307'sample')
cur = dbConn.cursor()
 
readData = pd.read_excel("./sample.xlsx")
 
for i in readData.index:
    query = "INSERT INTO example VALUES ('{0}', '{1}', '{2}', {3})".format(readData['Nation'][i], readData['Language'][i], readData['Money'][i], int(readData['Population'][i]))
    cur.execute(query)
 
dbConn.commit()
 
mariadbQuery.mariaDbClose(dbConn)
 
cs

 

4. 결과

    ˙ 프로그램에 의해서 엑셀 데이터가 DB에 저장되었는지 확인한다.

 

 

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

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.8

    ˙ MS Office Pro 2019

 

2. 목적

    ˙ pandas 라이브러리를 이용하여 xlsx(엑셀 파일)을 읽어온다.

    ˙ pandas 라이브러리를 이용하여 읽어온 엑셀 파일의 특정 값(열,행)에 접근한다.

 

3. 적용

    ① pandas로 읽어 올 엑셀 파일(xlsx)을 준비한다.

        - 첫번째 행(row) : title

        - 두번째 행(row) 이후 : 데이터

sample.xlsx
0.01MB

 

    ② pandas 라이브러리를 사용하여 특정 엑셀 파일(xlsx)을 load하는 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
import pandas as pd
 
 
readData = pd.read_excel("./sample.xlsx")
print(readData)
print()
 
for i in readData.index:
    print(i, readData['Nation'][i], readData['Language'][i], readData['Money'][i], readData['Population'][i])
 
cs

 

4. 결과

    ˙ 프로그램을 실행하여 결과를 확인한다.

 

 

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

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.8

    ˙ MariaDB v10.1.48 (win64)

 

2. 목적

    ˙ 파이썬에서 MariaDB와 Connection을 생성한다.
    ˙ 생성된 DB Connection을 종료한다.

 

3. 적용

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

        - pip install mariadb

 

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

        - 파일명: mariadbQuery.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 mariadb
 
 
def mariaDbConnection(u, pw, h, p, d):
    try:
        conn = mariadb.connect(user = u, password = pw, host = h, port = p, database = d)
        print("DB Connection Success: {0}".format(h))
    except mariadb.Error as e:
        print("Error connecting to MariaDB Platform : {}".format(e))
        sys.exit(1)
 
    return conn
 
 
def mariaDbClose(c):
    try:
        c.close()
        print("DB Close Success")
    except mariadb.Error as e:
        print("Error closing from MariaDB Platform")
        sys.exit(1)
cs

 

 

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

        - "mariaDBQuery.py"를 import하고 mariaDBConnection()과 mariaDbClose()를 호출한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import mariaDbQuery
 
 
### MariaDB Connection Info.
dbUser  = "root"
dbPw    = "1q2w3e"
dbIp    = "127.0.0.1"
dbPort  = 3306
dbName  = "sample"
 
 
dbConn = mariaDbQuery.mariaDbConnection(dbUser, dbPw, dbIp, dbPort, dbName)
mariaDbQuery.mariaDbClose(dbConn)
 
cs

 

 

4. 결과

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

연결 및 종료 성공

 

 

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

반응형

+ Recent posts