Menu

SQLite CLI: sqlite3 Komut Satırı Kullanımı

Terminalden çıkmadan sqlite3 komut satırını nasıl kullanırsınız: veritabanı açma, sorgu çalıştırma, dot komutları ve CSV içe/dışa aktarma işlemleri tek tek anlatılıyor.

Bu sayfada çalıştırılabilir editörler var — düzenle, çalıştır ve sonucu anında gör.

SQLite CLI Nedir?

sqlite3, SQLite ile birlikte gelen resmi komut satırı aracıdır. Bir veritabanı dosyası açar, karşına bir prompt çıkarır ve o dosya üzerinde SQL çalıştırmana izin verir. Sunucu yok, login yok, ayar dosyası yok — sadece bir binary ve bir dosya.

Bu aracı hızlı incelemeler, tek seferlik sorgular, şema dökümleri ve veri içe aktarımları için kullanacaksınız. Uygulama kodu yazmadan bir veritabanını kurcalamanın en hızlı yolu sqlite komut satırıdır.

$ sqlite3 mydata.db
SQLite version 3.45.0
Enter ".help" for usage hints.
sqlite>

mydata.db henüz yoksa dert etmeyin: ilk değişikliği yaptığınız anda SQLite onu sizin için oluşturur. sqlite3 komutunu dosya adı vermeden çalıştırırsanız, geçici bir bellek içi veritabanı açılır.

SQLite komut satırında SQL çalıştırma

Shell'e girdikten sonra SQL yazmaya başlayabilirsiniz; her ifadeyi noktalı virgülle bitirmeniz gerekiyor. Shell o noktalı virgülü görene kadar bekler — siz noktalı virgül koymadan Enter'a basarsanız size sadece bir devam satırı (continuation prompt) gösterir.

Noktalı virgül, "tamam bitti, çalıştır" demenin yoludur. Unutursanız shell oracıkta ...> ekranıyla bekler durur. Yeni bir satıra ; yazıp komutu tamamlayabilirsiniz.

Dot Komutları SQL Değildir

. ile başlayan her şey bir dot komutu'dur — yani SQL motoruna değil, doğrudan shell'in kendisine verilen bir talimat. Sonlarına noktalı virgül koymazsınız ve yalnızca sqlite3 shell'inin içinde çalışırlar.

sqlite> .tables
books

sqlite> .schema books
CREATE TABLE books (
  id INTEGER PRIMARY KEY,
  title TEXT NOT NULL,
  year INTEGER
);

sqlite> .help

Sürekli kullanacağınız komutlar şunlar:

  • .tables — geçerli veritabanındaki tüm tabloları listeler.
  • .schema [tablo] — belirtilen tablonun ya da tüm tabloların CREATE TABLE ifadesini gösterir.
  • .databases — bağlı veritabanı dosyalarını listeler.
  • .mode <format> — sorgu sonuçlarının nasıl görüntüleneceğini değiştirir.
  • .headers on — sorgu sonuçlarının üstünde sütun adlarını gösterir.
  • .read file.sql — bir SQL dosyasını çalıştırır.
  • .exit veya .quit — shell'den çıkar.

Tüm listeyi görmek için .help yazmanız yeterli. Onlarca komut var ama pratikte hep aynı on tanesini kullanırsınız.

Çıktıyı Okunabilir Hale Getirmek

sqlite3 komut satırının varsayılan çıktısı pipe (|) ile ayrılmış halde gelir ve sütun başlığı içermez — script'ler için ideal, ama gözle okumak için pek hoş değil. İki dot komutu bu durumu düzeltiyor:

sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM books;
id  title        year
--  -----------  ----
1   Dune         1965
2   Neuromancer  1984

Diğer kullanışlı modlar:

  • .mode box — Unicode karakterlerle çerçeveli bir tablo çizer. Ekran görüntüsü almak için birebir.
  • .mode csv — virgülle ayrılmış çıktı verir, başka araçlara pipe'lamak için ideal.
  • .mode json — JSON çıktısı üretir, her satır bir nesne olur.
  • .mode line — her sütunu ayrı satıra yazar, satırların geniş olduğu durumlarda işe yarar.

Bu ayarlar shell'i her açtığınızda sıfırlanır. Kalıcı hale getirmek istiyorsanız ~/.sqliterc dosyasına yazmanız yeterli; sqlite3 başlangıçta bu dosyayı otomatik olarak yükler.

SQLite ile CSV İçe ve Dışa Aktarma

SQLite komut satırı, CSV desteğini hazır olarak sunar. Önce CSV moduna geçin, ardından .import ile dosyayı bir tabloya aktarın:

sqlite> .mode csv
sqlite> .import authors.csv authors
sqlite> SELECT * FROM authors LIMIT 3;

Tablo yoksa .import ilk satırı sütun adları olarak kullanıp tabloyu kendisi oluşturur. Tablo zaten varsa ilk satır veri sayılır; bunu atlatmak istiyorsanız --skip 1 parametresini eklemeniz gerekir.

Ters yönde, yani veriyi dışa aktarmak için çıktıyı bir dosyaya yönlendirebilirsiniz:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output books.csv
sqlite> SELECT * FROM books;
sqlite> .output stdout

.output filename ile sonraki tüm sorgu sonuçları belirttiğiniz dosyaya yazılır; .output stdout diyene kadar bu böyle devam eder. CSV, JSON ya da ham şema dökümü; hangisini dışa aktarırsanız aktar mantık aynıdır.

SQLite'ta SQL Dosyası Çalıştırma

Birkaç satırı aşan her şey için SQL'i bir dosyaya koyup çalıştırmak en pratiği. Shell içinden şöyle:

sqlite> .read setup.sql

Ya da SQLite shell'e hiç girmeden, doğrudan kendi terminalinizden:

$ sqlite3 mydata.db < setup.sql
$ sqlite3 mydata.db "SELECT count(*) FROM books;"

İkinci kullanım şekli ise tek bir sorgu çalıştırıp çıkar — kabuk betikleri ya da hızlı kontroller için birebir. Çıktıyı biçimli görmek isterseniz -cmd bayrağıyla .mode ayarlarını da işin içine katabilirsiniz:

$ sqlite3 -header -column mydata.db "SELECT * FROM books;"

Tanımadığınız Bir Veritabanını İnceleme

Birisi sana bir .db dosyası verdiğinde ve içinde ne olduğuna dair en ufak bir fikrin yoksa, şu adımları izleyebilirsiniz:

$ sqlite3 mystery.db
sqlite> .tables
sqlite> .schema
sqlite> .indexes
sqlite> SELECT count(*) FROM some_table;

.schema argümansız çalıştırıldığında, dosyadaki tüm CREATE TABLE, CREATE INDEX ve CREATE TRIGGER ifadelerini önünüze döker. .indexes ise her tablonun indekslerini listeler. Shell'de geçireceğiniz beş dakika, herhangi bir README dosyasının anlatabileceğinden çok daha fazlasını öğretir size veritabanı hakkında.

Başka bir yerde yeniden oluşturabileceğiniz, tamamen metin tabanlı bir anlık görüntü almak istiyorsanız .dump komutunu kullanın:

sqlite> .output backup.sql
sqlite> .dump
sqlite> .output stdout

Bu komut, çıktıyı tekrar sqlite3'e verdiğinizde veritabanını —şema ve veriyle birlikte— sıfırdan yeniden oluşturan bir SQL scripti üretir.

Shell'den Çıkış

Çıkmak için üç yol var, hepsi aynı kapıya çıkıyor:

sqlite> .exit
sqlite> .quit

Ya da macOS ve Linux'ta Ctrl+D, Windows'ta ise Ctrl+Z ardından Enter tuşlarına basabilirsiniz. Değişikliklerin zaten kaydedilmiş durumda — SQLite, açıkça bir transaction başlatmadığınız sürece her ifadeyi çalıştırır çalıştırmaz commit'ler.

Sırada: SQLite için GUI Araçları

CLI hızlı ve script'lenebilir bir araç ama bazen tabloları tıklayarak gezmek, sütunları sıralamak ve satırları görsel olarak düzenlemek istersiniz. SQLite için işini layıkıyla gören birkaç GUI aracı mevcut — sıradaki sayfada bunlara değineceğiz.

Sıkça Sorulan Sorular

SQLite CLI ile veritabanını nasıl açarım?

Terminalden sqlite3 mydata.db komutunu çalıştırın. Dosya yoksa SQLite, ilk tabloyu oluşturduğunuz anda dosyayı kendiliğinden yaratır. Komutu dosya adı vermeden yani sadece sqlite3 şeklinde çalıştırırsanız, çıkışta kaybolan geçici bir bellek içi (in-memory) veritabanı açılır.

sqlite3 kabuğundan nasıl çıkarım?

.exit ya da .quit yazıp Enter'a basın; ikisi de aynı işi görür. Çoğu sistemde Ctrl+D (Windows'ta Ctrl+Z ardından Enter) da kabuğu kapatır.

SQLite'ta dot komutları nedir?

Dot komutları, . ile başlayan kabuk komutlarıdır: .tables, .schema, .mode, .import gibi. Bunlar SQL değil, doğrudan CLI'a verilen talimatlardır; o yüzden sonlarına ; koymanıza gerek yoktur ve yalnızca sqlite3 kabuğunun içinde çalışırlar.

SQLite CLI'da bir SQL dosyasını nasıl çalıştırırım?

Kabuğun içindeyseniz .read dosyaadi.sql komutunu kullanın. Dışarıdan çalıştırmak isterseniz sqlite3 mydata.db < dosyaadi.sql şeklinde yönlendirme yapabilirsiniz. Her iki yöntem de dosyadaki ifadeleri açık veritabanı üzerinde sırayla işler.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA