0Pricing
R Academy · Ders

DBI ve RSQLite Temelleri

DBI ile SQLite veritabanlarına bağlanın, sorgular çalıştırın ve sonuçları alın.

DBI ve RSQLite Temelleri, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

DBI ile R'de Veritabanı Erişimi

DBI paketi, R'de veritabanı erişimi için birleşik bir arayüz sağlar. DBI bir arka uç sürücüsü paketiyle eşleştirildiğinde aynı işlevler farklı veritabanı arka uçlarında (SQLite, PostgreSQL, MySQL vb.) çalışır. RSQLite en erişilebilir arka uçtur — sunucu kurulumu gerektirmez.

library(DBI)
library(RSQLite)

# DBI + RSQLite: connect to an in-memory SQLite database
# ':memory:' creates a fresh database in RAM
con <- dbConnect(RSQLite::SQLite(), ':memory:')

cat('Connection class:', class(con), '\n')
cat('Database backend:', dbGetInfo(con)$dbname, '\n')

# Always close connection when done
dbDisconnect(con)
cat('Connection closed.')

dbConnect() — Bağlantı Oluşturma

dbConnect(drv, ...) bir veritabanı bağlantısı oluşturur. İlk bağımsız değişken sürücü nesnesidir. SQLite için: RSQLite::SQLite(). Ek bağımsız değişkenler (veritabanı dosyasının yolu gibi) arka uca bağlıdır.

library(DBI)
library(RSQLite)

# In-memory database (disappears when connection closes)
con_mem <- dbConnect(RSQLite::SQLite(), ':memory:')

# File-based SQLite database (persists to disk)
# con_file <- dbConnect(RSQLite::SQLite(), '/tmp/mydb.sqlite')

# Always wrap connections in tryCatch or use on.exit()
on.exit(dbDisconnect(con_mem))

cat('Connected! Is valid:', dbIsValid(con_mem))

dbWriteTable() — Verileri Veritabanına Yükleme

dbWriteTable(con, 'table_name', df) bir tablo oluşturur ve bir veri çerçevesini tabloya yükler. Mevcut bir tabloyu değiştirmek için overwrite=TRUE, mevcut tabloya satır eklemek için append=TRUE ayarlayın.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')

# Load a data frame into the database
students <- data.frame(
  id = 1:5,
  name = c('Alice','Bob','Carol','Dave','Eve'),
  score = c(85, 92, 78, 88, 95)
)

dbWriteTable(con, 'students', students)

# Verify: list tables
cat('Tables in DB:', dbListTables(con), '\n')

dbDisconnect(con)

dbListTables() ve dbListFields()

dbListTables(con), bağlı veritabanındaki tüm tabloların adlarını döndürür. dbListFields(con, 'table'), belirli bir tablonun sütun adlarını döndürür. Bilinmeyen bir veritabanını incelemek için bunları kullanın.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'students', data.frame(id=1:3, name=c('A','B','C'), score=c(80,90,85)))
dbWriteTable(con, 'courses', data.frame(code=c('R101','R201'), title=c('Intro','Advanced')))

cat('Tables:', paste(dbListTables(con), collapse=', '), '\n')
cat('Students fields:', paste(dbListFields(con, 'students'), collapse=', '), '\n')

dbDisconnect(con)

dbGetQuery() — SQL Çalıştırma ve Verileri Döndürme

dbGetQuery(con, sql) bir SELECT sorgusu çalıştırır ve sonucu veri çerçevesi olarak döndürür. Bu, veritabanından veri okumak için temel işlevdir. dbSendQuery() + dbFetch() + dbClearResult() işlemlerini tek adımda birleştirir.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'students',
  data.frame(id=1:5, name=c('Alice','Bob','Carol','Dave','Eve'),
             score=c(85,92,78,88,95)))

# Run SQL and get results as data frame
high_scorers <- dbGetQuery(con,
  'SELECT name, score FROM students WHERE score >= 88 ORDER BY score DESC'
)

print(high_scorers)
dbDisconnect(con)

dbFetch() — Sonuçları Parçalar Halinde Alma

Büyük sonuç kümeleri için üç adımlı yaklaşımı kullanın: dbSendQuery() sorguyu gönderir, dbFetch(con, n=1000) n satırlık parçaları alır ve dbClearResult() temizleme işlemini yapar. Bu, büyük tablolar için bellek kullanımını denetler.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'data', data.frame(x=1:100, y=rnorm(100)))

# Three-step approach for chunked reading
rs <- dbSendQuery(con, 'SELECT * FROM data WHERE x <= 5')
chunk <- dbFetch(rs, n=3)  # Get first 3 rows
cat('Rows fetched so far:', nrow(chunk), '\n')
print(chunk)
dbClearResult(rs)  # Always clear!

dbDisconnect(con)

dbExecute() — SELECT Dışı SQL Çalıştırma

dbExecute(con, sql) verileri değiştiren SQL ifadelerini (INSERT, UPDATE, DELETE, CREATE, DROP) çalıştırır ve etkilenen satırların sayısını döndürür. Satır döndürmeyen DDL ve DML işlemleri için kullanın.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'students',
  data.frame(id=1:4, name=c('Alice','Bob','Carol','Dave'), score=c(85,92,78,88)))

# Update a record
rows_affected <- dbExecute(con,
  'UPDATE students SET score = 95 WHERE name = \'Alice\''
)
cat('Rows updated:', rows_affected, '\n')

# Verify
print(dbGetQuery(con, 'SELECT * FROM students WHERE name = \'Alice\''))
dbDisconnect(con)

dbExistsTable() ve dbRemoveTable()

dbExistsTable(con, 'name') bir tablonun mevcut olup olmadığını denetler (TRUE/FALSE döndürür). dbRemoveTable(con, 'name') bir tabloyu siler. Bunlar, birden çok kez çalıştırılabilen betiklerde güvenli kurulum ve temizleme için kullanışlıdır.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')

cat('Before: exists?', dbExistsTable(con, 'results'), '\n')

dbWriteTable(con, 'results', data.frame(x=1:3, y=4:6))
cat('After write: exists?', dbExistsTable(con, 'results'), '\n')

dbRemoveTable(con, 'results')
cat('After remove: exists?', dbExistsTable(con, 'results'), '\n')

dbDisconnect(con)

dbDisconnect() — Bağlantıları Kapatma

İşiniz bittiğinde veritabanı bağlantılarını her zaman dbDisconnect(con) ile kapatın. Açık bağlantılar bellek ve dosya tanıtıcıları tüketir. Bir hata oluşsa bile temizlemenin yapılmasını garanti etmek için işlevlerin içinde on.exit(dbDisconnect(con)) kullanın.

library(DBI)
library(RSQLite)

# Safe connection pattern using on.exit()
safe_query <- function(query) {
  con <- dbConnect(RSQLite::SQLite(), ':memory:')
  on.exit(dbDisconnect(con))  # Runs even if error!
  dbWriteTable(con, 'data', data.frame(x=1:5, y=6:10))
  dbGetQuery(con, query)
}

result <- safe_query('SELECT * FROM data WHERE x > 3')
print(result)

mtcars Verilerini SQLite'a Yükleme

Uygulamalı bir örnek: yerleşik mtcars veri kümesini SQLite'a yükleyin ve ardından üzerinde SQL sorguları çalıştırın. Bu, DBI iş akışının tamamını gösterir ve R'den SQL alıştırması yapmanızı sağlar.

library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')

# Load mtcars into the database
dbWriteTable(con, 'cars', mtcars, overwrite=TRUE)

# SQL query
result <- dbGetQuery(con, '
  SELECT cyl,
         COUNT(*) AS n,
         ROUND(AVG(mpg), 1) AS avg_mpg,
         ROUND(AVG(hp), 0) AS avg_hp
  FROM cars
  GROUP BY cyl
  ORDER BY cyl
')

print(result)
dbDisconnect(con)

DBI İş Akışının Özeti

DBI iş akışı, veritabanı arka ucundan bağımsız olarak tutarlı bir örüntüyü izler: Bağlan → Yükle/Sorgula → Bağlantıyı Kes. dbConnect() içindeki sürücüyü değiştirerek aynı kod SQLite, PostgreSQL, MySQL ve diğerlerinde çalışır.

library(DBI)
library(RSQLite)

# Complete DBI workflow
con <- dbConnect(RSQLite::SQLite(), ':memory:')

# 1. Create table
dbWriteTable(con, 'orders',
  data.frame(order_id=1:4, customer=c('Alice','Bob','Alice','Carol'),
             amount=c(100,200,150,80)))

# 2. Query
totals <- dbGetQuery(con,
  'SELECT customer, COUNT(*) orders, SUM(amount) total
   FROM orders GROUP BY customer ORDER BY total DESC')
print(totals)

# 3. Clean up
dbDisconnect(con)

Hızlı Kontrol

DBI'de dbGetQuery() ile dbExecute() arasındaki fark nedir?

Özet: DBI ve RSQLite

DBI ve RSQLite için temel çıkarımlar:

  • dbConnect(RSQLite::SQLite(), ':memory:') — bellekte bir SQLite bağlantısı oluşturur
  • dbWriteTable(con, 'name', df) — bir veri çerçevesini tabloya yükler
  • dbListTables(con) — tabloları listeler; dbListFields(con, 'tbl') — sütunları listeler
  • dbGetQuery(con, sql) — SELECT çalıştırır, veri çerçevesi döndürür
  • dbFetch(rs, n=1000) — büyük sonuçları parçalar halinde alır
  • dbExecute(con, sql) — INSERT/UPDATE/DELETE/DDL çalıştırır
  • dbDisconnect(con) — her zaman kapatın; işlevlerde on.exit() kullanın
  • Sürücüyü değiştirerek DBI, PostgreSQL, MySQL, BigQuery vb. ile çalışır
library(DBI)
library(RSQLite)

con <- dbConnect(RSQLite::SQLite(), ':memory:')
on.exit(dbDisconnect(con))

dbWriteTable(con, 'scores',
  data.frame(student=c('Alice','Bob','Carol'), score=c(85,92,78)))

dbExecute(con, 'UPDATE scores SET score = score + 5 WHERE score < 80')

dbGetQuery(con, 'SELECT * FROM scores ORDER BY score DESC')

Sıkça Sorulan Sorular

“DBI ve RSQLite Temelleri” dersi ücretsiz mi?

Evet — “DBI ve RSQLite Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“DBI ve RSQLite Temelleri” dersinde ne öğreneceğim?

DBI ile SQLite veritabanlarına bağlanın, sorgular çalıştırın ve sonuçları alın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“DBI ve RSQLite Temelleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DBI ve RSQLite Temelleri
  2. PostgreSQL ve MySQL'e Bağlanma
  3. dbplyr: dplyr Sözdizimiyle SQL
  4. Parametreli Sorgular ve İşlemler
← R Academy Sayfasına Dön