SQL Notları: `LOAD DATA INFILE` ve `UNION`

MySQL, büyük veri kümelerini veritabanına aktarmak ve birden fazla sorgunun sonuçlarını birleştirmek için güçlü araçlar sunar. Bu yazıda, **LOAD DATA INFILE** ve **UNION** operatörünün temel kullanımını ve bu araçlarla gerçekleştirilebilecek işlemleri ele alacağız.

---

### `LOAD DATA INFILE` ile Veri İçe Aktarma

`LOAD DATA INFILE`, büyük miktarda veriyi hızlı bir şekilde MySQL tablolarına aktarmak için kullanılan bir komuttur. Bu komut, özellikle CSV veya metin dosyalarındaki verileri veritabanına aktarmak için oldukça kullanışlıdır.

#### Temel Kullanım
Örnek bir CSV dosyası (`employee.csv`) aşağıdaki gibi olsun:

```
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
1000000;marta;female;accountant;15-6-1992
```

Bu dosyayı bir MySQL tablosuna aktarmak için aşağıdaki komutu kullanabilirsiniz:

```sql
LOAD DATA INFILE '/path/to/employee.csv'
INTO TABLE employee
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'
(id, name, sex, designation, dob);
```

Bu komut, `employee.csv` dosyasındaki verileri `employee` tablosuna aktarır.

#### Tarih Formatını Dönüştürme
Eğer tarih formatı standart değilse (örneğin `17-Jan-1985`), `STR_TO_DATE` fonksiyonunu kullanarak tarih formatını dönüştürebilirsiniz:

```sql
LOAD DATA INFILE '/path/to/employee.csv'
INTO TABLE employee
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'
(id, name, sex, designation, @dob)
SET dob = STR_TO_DATE(@dob, '%d-%b-%Y');
```

#### Yinelenen Kayıtları Yönetme
Yinelenen kayıtları yönetmek için `REPLACE` veya `IGNORE` seçeneklerini kullanabilirsiniz:

- `REPLACE`: Yinelenen kayıtları yeni verilerle değiştirir.
- `IGNORE`: Yinelenen kayıtları görmezden gelir.

```sql
LOAD DATA INFILE '/path/to/employee.csv'
REPLACE INTO TABLE employee
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'
(id, name, sex, designation, dob);
```

---

### `UNION` ile Sorgu Sonuçlarını Birleştirme

`UNION` operatörü, iki veya daha fazla `SELECT` sorgusunun sonuçlarını birleştirmek için kullanılır. Bu operatör, varsayılan olarak yinelenen kayıtları çıkarır.

#### Temel Kullanım
Örnek olarak, `Customers` ve `Suppliers` tablolarındaki farklı şehirleri birleştirmek için aşağıdaki sorguyu kullanabilirsiniz:

```sql
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
```

Bu sorgu, her iki tablodaki benzersiz şehirleri birleştirir ve sıralar.

#### `UNION ALL` ile Tüm Kayıtları Birleştirme
Eğer yinelenen kayıtları da dahil etmek istiyorsanız, `UNION ALL` kullanabilirsiniz:

```sql
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
```

Bu sorgu, her iki tablodaki tüm şehirleri (yinelenenler dahil) birleştirir ve sıralar.

#### `WHERE` ile Koşullu Birleştirme
Belirli bir koşula göre verileri birleştirmek için `WHERE` ifadesini kullanabilirsiniz. Örneğin, sadece Almanya'daki şehirleri birleştirmek için:

```sql
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
```

Bu sorgu, `Customers` ve `Suppliers` tablolarındaki Almanya'daki şehirleri birleştirir.

---

### Sonuç

`LOAD DATA INFILE` ve `UNION` operatörü, MySQL'de veri yönetimi ve sorgulama işlemlerini kolaylaştıran güçlü araçlardır. `LOAD DATA INFILE`, büyük veri kümelerini veritabanına hızlı bir şekilde aktarmak için idealdir. `UNION` operatörü ise birden fazla sorgunun sonuçlarını birleştirerek daha kapsamlı raporlar oluşturmanıza olanak tanır. Bu araçları doğru bir şekilde kullanarak, veritabanı yönetimini daha verimli hale getirebilirsiniz.

Önceki Yazı
SQL Notları: Komut Satırı İşlemleri ve Geçici Tablolar

MySQL komut satırı araçları ve geçici tablolar, veritabanı yönetimi ve so...

Sonraki Yazı
SQL Notları: mysqlimport ve mysqldump

MySQL, veri yönetimi ve yedekleme işlemleri için güçlü araçlar sunar. Bu ...