반응형

/*********************************************************************************************************
-- Title : [R3.3] MariaDB 드라이버 설정 및 테이블 조회/처리
-- Reference : hrd-net
-- Key word : R mariadb maria 마리아 driver 드라이버 dblistfields dbconnect dbgetquery dbsendupdate 데이터프레임 dataframe

*********************************************************************************************************/

-- R

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  
 
# ********************************************
# -- MariaDB, Oracle DB 드라이버 설정 
# ********************************************
 
# --DB(RDB) 연결 - ODBC, JDBC, DBI
#   Oracle/MySql 실습
 
# -- DB(RDB) 연결 방법 : ODBC와 JDBC 방식
#    ODBC(Open DataBase Connectivity) 연결방식 : DB 접속을 위해서 DB을 열어주는 API
#    JDBC(Java DataBase Connectivity) 연결방식 : JAVA로 작성된 프로그램으로 DBMS에 연결하는 API
#    -> 자바로 만들어진 R 패키지 프로그램으로 DBMS에 연결하기 위해서는 JDBC의 API를 지원하는 
#    RJDBC 패키지를 설치하면 된다.
 
# -- DB 연결
#    1. RJDBC 패키지에서 제공되는 JDBC()함수를 이용하여 해당 DBMS의 driver 지정
#    2. dbConnect()함수에 4개 인수(driver,url,id,password)를 적용하여 DB에 연결 
 
# -- 패키지 설치
#    RJDBC 패키지를 사용하기 위해서는 우선 java를 설치해야 한다.
install.packages("rJava")
install.packages("DBI")
install.packages("RJDBC"# JDBC()함수 제공 
 
# -- 패키지 로딩
library(DBI)
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_112')
 
library(rJava)
library(RJDBC)                                        # rJava에 의존적이다.
 
 
# ********************************************
# -- MariaDB 드라이버 연결 
# ********************************************
 
# -- MariaDB or MySql 드라이버 로드 
drv <- JDBC(driverClass="com.mysql.jdbc.Driver"
            classPath="C:\\R\\util\\mysql-connector-java-5.1.40\\mysql-connector-java-5.1.40-bin.jar")
 
# -- driver가 완전히 로드된 후 db를 연결 
conn <- dbConnect(drv, "jdbc:mysql://127.0.0.1:3306/work""scott""tiger")
 
# -- 오류 발생시
#    db 연결과정에 다음과 같은 error message가 출력되면 시스템을 재부팅 후 다시 연결한다.
#    Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1],  : 
#      java.lang.NoClassDefFoundError: Could not initialize class com.mysql.jdbc.Util
 
 
# ********************************************
# -- 테이블 조회/처리 
# ********************************************
 
# -- 테이블의 컬럼 보기 
#    dbListFields(con, "DBtable")
 
dbListFields(conn, "goods"# conn, table name
 
# -- 테이블을 데이터프레임으로 가져오기 
#    형식) dbReadTable(con, "DBtable")
goods_df<- dbReadTable(conn, "goods")
goods_df
 
# -- sql문 실행 - 전체 레코드 검색(select문)
query = "select * from goods"
goodsAll <- dbGetQuery(conn, query)
goodsAll
 
# -- sql문 실행 - 조건 검색
query = "select * from goods where su >= 3"
goodsOne <- dbGetQuery(conn, query)
goodsOne
 
# -- sql문 실행 - 정렬 검색 
query = "SELECT * FROM goods order by dan desc"
dbGetQuery(conn, query)
 
 
# ********************************************
# -- table 구조변경(추가, 수정,삭제)
# ********************************************
 
# -- 레코드 추가 
query <-"insert into goods values(5, '가스레인지',2,350000)"
dbSendUpdate(conn, query)
dbGetQuery(conn, "select * from goods");
 
# -- 레코드 수정 
query = "update goods set name='gas range' where code=5"
dbSendUpdate(conn, query)
dbGetQuery(conn, "select * from goods");
 
 
# -- 레코드 삭제 
query = "delete from goods where code=5"
dbSendUpdate(conn, query)
dbGetQuery(conn, "select * from goods");
 
# -- db연결 종료 
dbDisconnect(conn)
 

cs

반응형

+ Recent posts