Email             :
RPubs            : https://rpubs.com/aliciaarifin/
Jurusan          : Statistika
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


1 Connect R to SQL

Library yang akan dibutuhkan dalam emngconnect R ke dalam SQL adalah RMariaDB, RMySQL, RPostgres, dan RSQLite. Jika belum memiliki packagenya, silahkan install terlebih dahulu. Pada

install.packages(c(
                   "RMariaDB",
                   "RMySQL",
                   "RPostgres",
                   "RSQLite")
                 )
library("RMariaDB")               
## Warning: package 'RMariaDB' was built under R version 4.2.3
library("RMySQL")                 
## Warning: package 'RMySQL' was built under R version 4.2.3
## Warning: package 'DBI' was built under R version 4.2.3
library("RPostgres")              
## Warning: package 'RPostgres' was built under R version 4.2.3
library("RSQLite")    
## Warning: package 'RSQLite' was built under R version 4.2.3
library("readxl")   # untuk mengimport excel (xlsx)

1.1 Data

Data yang akan diperlukan dalam praktikum ini akan diimpor menggunakan codingan sebagai berikut :

setwd(getwd()) # set working directory


## csv files
Customers   <-read.csv("data_praktikum2/Customers.csv")
Categories  <-read.csv("data_praktikum2/Categories.csv")  
Employees   <-read.csv("data_praktikum2/Employees.csv")  
OrderDetails<-read.csv("data_praktikum2/OrderDetails.csv")  
Orders      <-read.csv("data_praktikum2/Orders.csv")  
Products    <-read.csv("data_praktikum2/Products.csv")  
Shippers    <-read.csv("data_praktikum2/Shippers.csv")
Suppliers   <-read.csv("data_praktikum2/Suppliers.csv")  

## excel files (xlsx)
Customers   <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=1)      
Categories  <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=2) 
Employees   <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=3)
OrderDetails<-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=4) 
Orders      <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=5)
Products    <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=6) 
Shippers    <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=7)  
Suppliers   <-read_excel("data_praktikum2/RawDatabase.xlsx",sheet=8)  

Kalau dilihat dari hasil codingan di atas, kedua codingan meng-impor file seperti di atas. Meng-impor file csv kita akan menggunakan read.csv(), dan file excel (xlsx) adalah read_excel() yang merupakan package readxl. Setelah kita meng-impor kita akan lanjut membuat database dan memasukkan ke dalam database.

1.2 R MySQL

Pertama-tama kita akan menyambungkan RMySQL

bunbun_RMySQL <- dbConnect(MySQL(), 
                     user='root',
                     password='', 
                     dbname='bunbun_prak', 
                     host='localhost')

tampilan phpMyAdmin sebelum ditambahkan tabel

dbWriteTable(bunbun_RMySQL, "Customers", Customers, append=T) 
dbWriteTable(bunbun_RMySQL, "Categories", Categories, append=T) 
dbWriteTable(bunbun_RMySQL, "Employees", Employees, append=T) 
dbWriteTable(bunbun_RMySQL, "OrderDetails", OrderDetails, append=T) 
dbWriteTable(bunbun_RMySQL, "Orders", Orders, append=T) 
dbWriteTable(bunbun_RMySQL, "Products", Products, append=T) 
dbWriteTable(bunbun_RMySQL, "Shippers", Shippers, append=T) 
dbWriteTable(bunbun_RMySQL, "Suppliers", Suppliers, append=T) 

untuk melihat perubahan kita bisa tekan tombol refresh, lalu tampilan akan seperti di bawah ini.

tampilan database setelah ditambah tabel Jika dalam satu tabel struktur suatu tanggal tidak benar seperti tabel Employees, maka kita bisa menggunakan codingan di bawah ini untuk membenarkan atau merevisi tanggalnya

dbRemoveTable(bunbun_RMySQL, 'employees') # menghapus table
Employees["BirthDate"] <-as.Date(Employees$BirthDate, format = "%Y-%m-%d") # mengganti format tanggal dengan benar
dbWriteTable(bunbun_RMySQL, "Employees", Employees, append=T) # menambahkan database employee kembali ke dalam database.

Jika keluar output TRUE maka codingan operasi yang kita lakukan pada database/tabel berhasil dijalankan. FALSE jika tidak berhasil.
Notes :
+ Khusus RMySQL untuk menghapus tabel menggunakan dbRemoveTable(), nama file yang diketik harus huruf kecil semua. karena nama tabel yang sudah dimasukkan ke dalam MySQL (phpMyAdmin) adalah huruf kecil semua.

1.3 R Postgres

Kita akan mengconnect R dengan Progress terlebih dahulu.

bunbun_RPostgres <- dbConnect(Postgres(), 
                              user='postgres',
                              password='bunbun', 
                              dbname='bunbun_prak2', 
                              host='localhost')
dbListTables(bunbun_RPostgres)
## [1] "Customers"    "Categories"   "OrderDetails" "Orders"       "Products"    
## [6] "Shippers"     "Suppliers"    "Employees"

dbListTables() merupakan codingan untuk melihat berapa banyak tabel yang terdapat pada database bunbun_prak2. characted(0) mengartikan bahwa di dalam database bunbun_prak2 tidak ada tabel.

tampilan database setelah ditambah tabel

dbWriteTable(bunbun_RPostgres, "Customers", Customers, append=T) 
dbWriteTable(bunbun_RPostgres, "Categories", Categories, append=T) 
dbWriteTable(bunbun_RPostgres, "Employees", Employees, append=T) 
dbWriteTable(bunbun_RPostgres, "OrderDetails", OrderDetails, append=T) 
dbWriteTable(bunbun_RPostgres, "Orders", Orders, append=T) 
dbWriteTable(bunbun_RPostgres, "Products", Products, append=T) 
dbWriteTable(bunbun_RPostgres, "Shippers", Shippers, append=T) 
dbWriteTable(bunbun_RPostgres, "Suppliers", Suppliers, append=T) 

tampilan database setelah ditambah tabel Seperti RMySQL, kita perlu mengubah suatu struktur tanggal pada bisa menggunakan codingan di bawah ini untuk membenarkan atau merevisi tanggalnya

dbRemoveTable(bunbun_RPostgres, 'Employees') # menghapus table
Employees["BirthDate"] <-as.Date(Employees$BirthDate, format = "%Y-%m-%d") # mengganti format tanggal dengan benar
dbWriteTable(bunbun_RPostgres, "Employees", Employees, append=T) # menambahkan database employee kembali ke dalam database.

Jika keluar output TRUE maka codingan operasi yang kita lakukan pada database/tabel berhasil dijalankan. FALSE jika tidak berhasil.
Notes :
Khusus RPostgres untuk menghapus tabel menggunakan dbRemoveTable(), nama file yang diketik harus sesuai dengan nama yang telah dipilih sebelumnya. Huruf kapital atau tidaknya diperlukan, tidak seperti RMySQL yang harus huruf kecil semua.

1.4 RSQLite

SQLite adalah basis data seperti MySQL tetapi penyimpanan dilakukan oleh local storage. database akan tersimpan terdapat di dalam working directory

bunbun_RSQLite <- dbConnect(RSQLite::SQLite(), "SQLbunbun.sqlite")
dbListTables(bunbun_RSQLite)
## [1] "Categories"   "Customers"    "Employees"    "OrderDetails" "Orders"      
## [6] "Products"     "Shippers"     "Suppliers"

Karena kita baru saja membuat SQLite, maka di dalam database tersebut belum memiliki tabel-tabel di dalamnya.

dbWriteTable(bunbun_RSQLite, "Customers", Customers, append=T) 
dbWriteTable(bunbun_RSQLite, "Categories", Categories, append=T) 
dbWriteTable(bunbun_RSQLite, "Employees", Employees, append=T) 
dbWriteTable(bunbun_RSQLite, "OrderDetails", OrderDetails, append=T) 
dbWriteTable(bunbun_RSQLite, "Orders", Orders, append=T) 
dbWriteTable(bunbun_RSQLite, "Products", Products, append=T) 
dbWriteTable(bunbun_RSQLite, "Shippers", Shippers, append=T) 
dbWriteTable(bunbun_RSQLite, "Suppliers", Suppliers, append=T) 
dbListTables(bunbun_RSQLite)

Seperti RMySQL, kita perlu mengubah suatu struktur tanggal pada bisa menggunakan codingan di bawah ini untuk membenarkan atau merevisi tanggalnya

dbRemoveTable(bunbun_RSQLite, 'Employees') # menghapus table
Employees["BirthDate"] <-as.Date(Employees$BirthDate, format = "%Y-%m-%d") # mengganti format tanggal dengan benar
dbWriteTable(bunbun_RSQLite, "Employees", Employees, append=T) # menambahkan database employee kembali ke dalam database.

Notes:
pada SQLite, fungsi dbRemoveTable() digunakan untuk menghapus table tanpa ada pengecualian nama table. Contoh kita bisa menghapus table dengan codingan dbRemoveTable(bunbun_RSQLite, 'Employees') dan dbRemoveTable(bunbun_RSQLite, 'employees'), hasil codingan tersebut sama. tidak seperti MySQL dan Postgres yang memiliki spesifikasi untuk menghapus tabel.

2 Notes

Untuk menghubungkan R dengan Posgress dan R dengan SQLite, hal yang membedakan dari RMySQL adalah cara mengconnect di awal dengan codingan di bawah ini, dengan user password dan host yang ada di dalam laptop masing-masing. dbname merupakan nama database yang mau kita tuju.

# MySQL
MySQL <- dbConnect(MySQL(), 
                  user='',
                  password='', 
                  dbname='', 
                  host='')

# Postgres
postgres <- dbConnect(Postgres(), 
                  user='',
                  password='', 
                  dbname='', 
                  host='')

# RSQLite
RSQLite <- dbConnect(RSQLite::SQLite(), "MySQLite.sqlite")