Kaynak: https://oguzerol.com/excel-sql-veritabani-gecisi/

[![Örnek ekran: Dosyaları ilişkili kayıtlara dönüştürün. Müşteri: 2 kayıt. Sipariş: 3 kayıt. C-01 → S-01. C-02 → S-02. C-99 → inceleme. 2 sipariş aktarıldı.](https://oguzerol.com/gorseller/hizmet-kapaklari/excel-sql-veritabani-gecisi-webapp-v1-tr.webp)

Görseli büyüt](https://oguzerol.com/gorseller/hizmet-kapaklari/excel-sql-veritabani-gecisi-webapp-v1-tr.webp)

# Excel'den SQL Veritabanına Geçiş: Tablo, Göç Provası, Kesme Günü

[Oğuz Erol](https://oguzerol.com/hakkimda/)  |  17 dk okuma

Excel’den SQL veritabanına geçişin zor kısmı satırları taşımak değil, satırların birbirine nasıl bağlı olduğunu ortaya çıkarmaktır. Kurgusal bir rulman dağıtıcısının dört yıllık sipariş dosyasında ilk göç provası 41.260 sipariş satırının 1.638’inin hatalı olduğunu gösterdi. Bunların 1.458’i hiçbir müşteriye ya da ürüne bağlanamıyordu, kalan 180’inde sipariş numarası iki müşteride kullanılmıştı ya da tarih okunamıyordu. Excel bir siparişin var olmayan bir müşteriye yazılmasını engellemez. Kesme, yani Excel’in salt okunur yapılıp yeni sistemin tek kaynak olduğu an, ancak üç gece üst üste her satırın hesabı kapandığında yapıldı.

Bu sayfa 100–300 kişilik bir sanayi ya da dağıtım şirketinde, birden çok kişinin yıllardır yazdığı Excel dosyasından sorumlu operasyon, finans ya da BT yöneticisi için. Geçişi bir örnekle baştan sona yürüyorum: tablo tasarımı, mükerrer kayıtlar, göç provası, paralel çalışma, kesme günü ve geri dönüş planı. Bu geçişi şirketinize özel bir web uygulamasının ilk adımı olarak yapıyorum. Kullanıcılarınız SQL yazmaz, ekranlarla çalışır.

Dosyayı tek kişi tutuyorsa ve sekmeler birbirine bağlı değilse geçişe gerek yok, aşağıda ayrı bölümde anlatıyorum. Sayfanın başındaki görsel ilkeyi küçük ölçekte gösteriyor: müşteri tablosunda olmayan C-99’a yazılmış sipariş aktarılmaz, incelemeye düşer.

## Excel “veritabanı” tam olarak nerede kırılır?

Excel’in sorunu boyut değil, kayıtlar arasında bağ kuramamasıdır. 16 Ekim 2026’da okuduğum Microsoft sayfasına göre bir çalışma sayfası 1.048.576 satır ve 16.384 sütun alıyor ([Microsoft Destek](https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3)). Örnekteki 41.260 satır bu sınırın yüzde 3,9’u. Dosya şu yüzden kırılıyor:

- **İlişki adla kuruluyor.** Sipariş satırında müşteri kodu yok, unvan yazıyor. “A.Ş.” ile “AŞ” iki ayrı müşteri gibi görünüyor, bir yazım hatası siparişi sahipsiz bırakıyor.
- **Silme engellenmiyor.** Biri pasif müşterileri sildiğinde onlara bağlı siparişler müşterisiz kalıyor.
- **Renk veri değil.** İptal edilen sipariş kırmızıya boyanıyor. Pivot tablo kaynak satırın dolgu rengine göre toplamaz.
- **Değişiklik geçmişinde boşluk var.** Değişiklikleri Göster, Microsoft 365 için Excel’de son 365 günün hücre düzenlemelerini kimin ne zaman yaptığıyla gösteriyor ([Microsoft Destek](https://support.microsoft.com/en-us/office/show-changes-that-were-made-in-a-workbook-978ceea7-bbf6-4337-bca7-22e7cc9892e8)). Yardım sayfasına göre biçim değişiklikleri, pivot işlemleri, gizleme ve filtreleme görünmüyor. Tek seferlik satın alınmış ya da eski bir sürümde yapılan düzenleme izlenmiyor ve bölmeyi temizliyor ([Microsoft Destek](https://support.microsoft.com/en-us/excel/get-help-with-show-changes-in-excel)). Bir satırı kırmızıya kimin boyadığı orada yok.
- **Veri doğrulama yapıştırmayı durdurmuyor.** Microsoft’a göre veriyi kopyalayarak ya da doldurarak girerseniz doğrulama mesajı çıkmıyor ve geçersiz veri girilebiliyor ([Microsoft Destek](https://support.microsoft.com/en-us/office/display-or-hide-circles-around-invalid-data-69144e43-fc71-48e0-8d4f-0b9f1ea96c03)).
- **Çakışmada son kaydeden kazanıyor.** Birlikte düzenleme Microsoft 365, OneDrive ya da SharePoint Online ve .xlsx, .xlsm, .xlsb biçimi istiyor. Çakışan değişikliklerde genel kural son kaydedilenin geçerli olması ([Microsoft Destek](https://support.microsoft.com/en-us/office/collaborate-on-excel-workbooks-at-the-same-time-with-co-authoring-7152aa8b-b791-414c-a3bb-3024e46fb104)).
- **Sipariş numarası elle veriliyor.** “Son satıra bak, bir ekle” yöntemiyle iki kişi aynı numarayı alabiliyor.

## Örnek: dört yıllık sipariş dosyası, 41.260 satır

*Örnekteki bütün sayılar, bu iş için yazdığım bir betiğin ürettiği kurgusal veriden geliyor. Gölge dönem, kesme günü ve rapor envanteri de kurgudur, gerçek bir müşteri projesi değildir.*

220 kişilik bir rulman ve güç aktarım ürünleri dağıtıcısı düşünün. Siparişler dört yıldır paylaşılan bir klasördeki tek bir çalışma kitabında. Dosyaya 9 satış temsilcisi, 3 sipariş operasyon uzmanı ve 2 finans uzmanı yazıyor. Operasyon uzmanlarından biri geçiş boyunca **ana veri sorumlusu** olarak atanıyor: müşteri ve ürün kayıtlarına o karar veriyor, sipariş girmiyor.

| sekme | satır | nasıl tutuluyor |
| --- | --- | --- |
| Müşteriler | 2.418 | Unvan, vergi numarası (412 satırda boş), il, temsilci adı serbest metin |
| Ürünler | 6.940 | Altı haneli stok kodu, ad, birim. Bazı kodlar sıfırla başlıyor |
| Siparişler | 41.260 | Her satır bir sipariş kalemi. Müşteri unvanı metin, sipariş numarası elle, iptal kırmızı dolguyla |

Siparişler sekmesinde 9.896 sipariş var ama 9.874 farklı numara: 22 numara iki farklı müşterinin siparişinde kullanılmış.

## Tablo tasarımı: hangi sekme hangi tabloya?

İlişkisel veritabanında (PostgreSQL, MySQL ya da SQL Server gibi) her kayıt türü kendi tablosunda durur ve tablolar birbirine kimlikle bağlanır. Üç kavramı aynı adla kullanıyorum:

- **Birincil anahtar:** bir kaydı tek başına tanımlayan, sistemin verdiği ve değişmeyen kimlik. Unvan değişebilir, kimlik değişmez.
- **Yabancı anahtar:** başka tablodaki kaydı gösteren alan. Müşteri tablosunda olmayan bir müşteri kimliğiyle sipariş kalemi kaydedilemez, bağlı siparişi olan müşteri silinemez.
- **Kaynak izi:** her taşınan kaydın Excel’deki dosya, sekme ve satır numarası. Bir rakam sorulduğunda Excel’deki satıra geri gidilebilir.

| Excel’de | veritabanında (anahtarlar) |
| --- | --- |
| Müşteriler sekmesi | musteri (musteri_id; vergi no doluysa tekil) |
| Temsilci adı sütunu | kullanici (kullanici_id); musteri ona bağlanır |
| Ürünler sekmesi | urun (urun_id; stok kodu metin ve tekil) |
| Siparişler: numara, müşteri, tarih | siparis (siparis_id → musteri; eski numara ayrı alanda) |
| Siparişler: kalem satırları | siparis_kalemi (kalem_id → siparis, urun) |
| Kırmızı dolgu | siparis.durum alanı |
| Birleştirme kararları, kaynak izi | eslesme (eski satır → yeni kimlik) |

Siparişler sekmesi iki tabloya bölünüyor, çünkü Excel’de sipariş başlığı her kalemde tekrar ediyor. Aynı siparişin iki kaleminde farklı müşteri yazıyorsa veritabanı kabul etmez, provada yakalanır. Birim fiyat kalemde kalır: fiyat listesi değişse de geçmiş siparişin tutarı değişmez.

### Mükerrer müşteri ve ürün nasıl birleştirilir?

Mükerrer kayıt birleştirmesi iki aşamalı yapılır: önce kesin anahtar, sonra benzerlik. Unvanları karşılaştırmadan önce Türkçe harfleri, büyük-küçük harfi, noktalamayı ve “San. ve Tic.”, “Ltd. Şti.”, “A.Ş.” gibi ekleri eşitliyorum.

1. **Aynı vergi numarası:** 61 grupta 134 satır çıktı. 59 grupta unvanlar aynı firmayı anlatıyordu, 71 fazla satır birleşti. 2 grupta unvanlar tamamen farklıydı: vergi numarası kopyala-yapıştırla yanlış satıra geçmişti. Bunlar birleştirilmedi, doğru numarayı finans buldu. Vergi numarası güçlü bir anahtar, ama körü körüne güvenilecek kadar değil.
2. **Vergi numarası boş, unvan benzer:** 412 satırda 38 aday çift çıktı. 29’u aynı firmaydı ve birleşti, 9’u benzer adlı farklı firmalardı, örneğin biri İzmir’de, biri İzmit’te. Kararı ana veri sorumlusu verdi.

Sonuç: 2.418 satırdan 2.318 tekil müşteri. Ürünlerde 212 kodun baştaki sıfırı düşmüştü, 47 ürün eski ve yeni koduyla iki satırda duruyordu. 6.940 satırdan 6.893 tekil ürün kaldı, eski kod ayrı alanda saklandı. Birleştirilen her satır eşleşme tablosunda iki eski satır numarasıyla durur, yanlış birleştirme geri alınabilir.

## Göç provası: kaç satır, kaç hata?

Göç provası, verinin kopyasını hedef veritabanına baştan sona aktarıp her satırın hesabını vermektir. Kaynağa dokunulmaz. **Yetim kayıt** dediğim, bağlı olması gereken müşteri ya da ürünü bulunamayan satırdır. Örnekte üç prova yapıldı:

|  | prova 1 | prova 2 | prova 3 |
| --- | --- | --- | --- |
| Müşterisi bulunamayan | 318 | 54 | 0 |
| Ürünü bulunamayan | 1.140 | 17 | 0 |
| Numarası iki müşteride | 174 | 174 | 0 |
| Tarihi okunamayan | 6 | 6 | 0 |
| **Toplam hatalı satır** | **1.638 (yüzde 4,0)** | **251 (yüzde 0,6)** | **0** |

Örnekte her hatalı satır yalnız bir gruba düşüyor, toplam bu yüzden doğrudan toplanıyor. Provalar arasındaki kararlar:

- **Silinmiş 14 müşteri (264 satır):** Müşteriler sekmesinden “pasif” diye silinmişlerdi. Siparişlerdeki unvanla pasif müşteri olarak yeniden kuruldular, liste ana veri sorumlusunun onayından geçti. 11 farklı yazım hatası (54 satır) elle doğru müşteriye bağlandı.
- **Ürün tarafı:** 1.027 satır baştaki sıfır kuralıyla eşleşti. Silinmiş 9 ürün (96 satır) pasif ürün olarak kuruldu. Kodu hiçbir yerde olmayan 17 satır kapanmış eski siparişlerdeydi. Finans bunları “eşlenemeyen eski ürün” adlı tek bir yer tutucu kayda bağladı: tutarları raporlarda kalıyor, ürün bilgisi uydurulmuyor.
- **Çakışan 22 numara (174 satır):** iki siparişten biri yeni numara aldı, eski numara “kaynak numara” alanında.
- **Tarihi okunamayan 6 satır:** 389 metin tarihin 383’ü gün.ay.yıl kuralıyla okundu. Kalan 6’sında “31.04” gibi olmayan bir tarih vardı, hepsi dört yıl önce kapanmış siparişlerdi. Finans bunları kapsam dışı bıraktı, Excel arşivinde kalıyorlar.

Prova 3’ün hesabı: 41.260 kaynak satır = 41.254 aktarılan + 6 kapsam dışı + 0 bekleyen. Her satır bu üç gruptan birinde olmadan prova geçmiş sayılmaz. Satır sayısının yanında son 12 ayın tutar toplamı, temsilci bazında satış ve en büyük 20 müşterinin toplamı da kaynakla karşılaştırılır.

### Excel’de aynı kontrolü yapmak isterseniz

Siparişler sekmesinin C sütununda müşteri unvanı, Müşteriler sekmesinin B sütununda unvan, D sütununda vergi numarası olsun:

- Siparişte, müşterisi bulunamayan satır: `=EĞERSAY(Müşteriler!B:B;C2)=0`
- Müşteriler sekmesinde, vergi numarası tekrar eden satır: `=VE(D2<>"";EĞERSAY(D:D;D2)>1)`

İkinci formül 134 satırı işaretliyor, yukarıdaki 61 grup. İlki 3.015 satırı işaretliyor, ama bunların 2.697’si yalnız yazım biçimi farkı (ekin atılması, Türkçe harf). EĞERSAY büyük-küçük harfi ayırmaz, ama eki ve noktalamayı ayırır.

Eşitleme adımı: iki sekmeye de aynı yardımcı sütunu kurun ve EĞERSAY’ı bu iki sütun arasında çalıştırın. Yardımcı sütun önce ekleri, sonra Türkçe harfleri, sonra noktayı siler, en sonda boşlukları toplar. Başı şöyle: `=KIRP(YERİNEKOY(YERİNEKOY(YERİNEKOY(C2;" San. ve Tic. A.Ş.";"");" Ltd. Şti.";"");".";""))`. Dosyanızdaki her ek yazımı (“SANAYİ VE TİCARET AŞ”, “LTD ŞTİ”) ve her Türkçe harf (ı→i, ş→s gibi, büyük ve küçük ayrı) için bir YERİNEKOY daha eklenir, çünkü YERİNEKOY metni birebir arar. İngilizce Excel’de `COUNTIF`, `AND`, `TRIM`, `SUBSTITUTE` yazılır, ayırıcı virgüldür.

Bu adımları Python’da örnek verinin üzerinde yeniden hesapladım: yardımcı sütunla işaretlenen satır tam 318’e iniyor. Excel’de çalıştırmadım, kendi dosyanızın bir kopyasında deneyin. Excel bu listeyi verir, ama ertesi gün aynı hatayla yazılan yeni satırı engellemez.

## Paralel çalışma: gölge dönem ve kesme günü

Paralel çalışmada çift giriş istemem. İki sisteme aynı siparişi yazmak yorar ve farkların çoğu yazım hatasından çıkar. Başlangıç önerim **gölge dönem**: Excel iş yapılan tek kaynak olarak kalır, her gece kopyası veritabanına yeniden aktarılır, her sabah beş kontrol raporu (aylık satış, temsilci bazında satış, açık siparişler, müşteri ve ürün bazında satış) iki tarafta karşılaştırılır. Kullanıcılar bu sırada yeni sistemin deneme kopyasında çalışır.

Örnekte gölge dönem 10 iş günü:

- **1. gün:** örnekte finans aylık raporu kırmızı satırları elle düşerek hazırlıyor, satış müdürünün pivotu ise onları da topluyor. Aktarım rengi henüz okumadığı için veritabanı kırmızı satırları satış sayıyor. Sonuç: veritabanının aylık satışı satış müdürünün pivotuyla aynı, finansın raporundan 268.755 TL, yani yüzde 1,7 yüksek. Fark bu ay iptal edilip yalnız kırmızıya boyanmış 14 kalemden geliyor. Dosyanın tamamında 214 kırmızı satır var. Sipariş operasyon uzmanları listeye bakıyor: 211’i iptal, 3’ü “acil” diye boyanmış. Aktarım artık kırmızıyı “iptal adayı” diye okuyor, onaylanan liste durum alanına yazılıyor. Ertesi gece veritabanı finansın rakamını veriyor, satış müdürünün pivotu ise iptalleri saydığı için fazla çıkıyor.
- **6. gün:** o hafta Excel’de açılan 2 yeni müşteri farklı yazılmış, 9 sipariş satırı yetim kalıyor. İkisi sevk edilmemiş açık sipariş. Kural ekleniyor: gölge dönemde yeni müşteriyi yalnız ana veri sorumlusu açar. 7. gün düzeltmeyle geçiyor.
- **8., 9. ve 10. gün:** üç gece üst üste temiz.

**Kesme günü kararı.** Kesme için başlangıç önerim şu koşulların hepsi:

1. Üç gece üst üste satır hesabı kapanıyor, bekleyen satır sıfır.
2. Açık siparişlerde yetim satır yok.
3. Beş kontrol raporu iki tarafta aynı ya da her farkın açıklaması yazılı.
4. Her rolden en az bir kişi kendi işini deneme kopyasında en az bir gün yaptı.
5. Geri dönüş dosyası prova edildi.
6. Yeni veritabanının günlük yedeği alınıyor ve yedekten geri yükleme bir kez denendi.
7. Kesme günü ay kapanışıyla çakışmıyor.

Altıncı günde ikinci koşul bozulunca sayaç sıfırlandı. Onuncu gün, bir cuma, koşulların hepsi sağlandı. Excel saat 17.00’de salt okunur yapıldı, son aktarım o akşam çalıştı ve hesabı provalar gibi kapandı. Cuma 17.00’den sonra gelen siparişler e-postada bekledi, pazartesi sabahı ilk iş yeni sisteme girildi.

### Geri dönüş planı

Geri dönüş planı kesmeden önce prova edilir, sonra değil. Başlangıç önerim:

- **Pencere:** kesmeden sonraki ilk 5 iş günü.
- **Tetik:** sipariş girişi 4 saatten uzun duruyor ya da bir kontrol raporu açıklanamayan fark veriyor. Kararı finans, sipariş operasyon uzmanlarıyla birlikte verir.
- **Yol:** Excel’in donmuş kopyası açılır. Kesmeden sonra yeni sistemde girilen kayıtlar iz kaydından, eski Excel’in sütun düzeninde bir dosya olarak alınır ve eklenir. Bu dosya prova 3’te üretildi ve Excel’e eklenerek denendi.
- **Numara çakışması:** yeni sistemin sipariş numaraları Excel’in kullandığı aralığın dışında bir seriden başlar. Örnekte Excel 100001–109874 arasını kullanıyordu, yeni seri 200001’den başladı. Geri dönüşte iki seri karışmaz.
- **Pencereden sonra:** 6. iş gününden ilk ay kapanışına kadar geri dönüş planlı değildir. Ancak finansın yazılı kararıyla, aynı yolla yapılır.
- **Dönüşsüzlük noktası:** yeni sistemde ilk ay kapanışı. Ondan sonra sorun düzeltilerek çözülür.

## Raporlar yeniden kurulmadan kimse Excel’i bırakmaz

Kullanıcılar, ihtiyaç duydukları bir rakamı yeni sistemde bulamadıkları gün Excel’e döner. Envantere pivot tablo ve grafiklerin yanında makrolar, bu dosyaya bağlanan başka çalışma kitapları ve Power Query bağlantıları da girer, ayrı bir liste olarak. Bu benim çıkarımım: kesmeden sonra bu bağlar donmuş dosyayı hata vermeden okumaya devam edebilir, dosya arşive taşınırsa da kopar. İkisi de kesmeden önce ele alınır.

Örnekte paylaşılan dosyada 11 pivot tablo ve 4 grafik, kişisel kopyalarda 8 rapor vardı, toplam 23 rapor. Makro ve bağlantılar bu sayıma girmiyor. Her birinin kullanıcısına soruldu: 9’u haftalık, 6’sı aylık kullanılıyordu, 8’ini kimse sahiplenmedi. 15 rapor yeniden kuruldu, beşi gölge dönemde kontrol raporu oldu. Sahipsiz 8 rapor kurulmadı. Başlangıç önerim: 30 gün içinde biri isterse kurulur.

Excel’e geri dönülmemesi için gereken, benim listem:

- **Kullanılan her rapor, gölge dönemde aynı rakamı vermiş olmalı.** Rakam tutmazsa kullanıcı eski dosyayı açar.
- **Her listede Excel’e dışa aktarma olmalı,** kullanıcının yetkisiyle filtrelenmiş. Dışa aktarıp analiz yapmak geri dönüş değildir. Dışa aktarılan dosyadan veriyi geri girmek geri dönüştür.
- **Toplu giriş yolu olmalı.** Bayiden ya da tedarikçiden gelen tabloyu elle yazdırmak insanları Excel’e iter. Bu iş için [kontrollü Excel aktarım ekranı](https://oguzerol.com/kontrollu-excel-aktarim-ekrani/) aynı veritabanına satır satır kontrolle yazar.
- **Paylaşılan klasörde düzenlenebilir kopya kalmamalı.** Eski dosya salt okunur arşivde durur, saklama süresini muhasebe ve hukuk tarafınız belirler.

## Kurallar: başlangıç önerim

Aşağıdaki kurallar başlangıç önerimdir, ölçülmüş bir doğru değildir. Sizin verinizle ilk provada ayarlanır.

| konu | önerim |
| --- | --- |
| Müşteri kimliği | Sistem verir, unvan anahtar değildir |
| Aynı vergi numarası | Unvan benzerse birleştirme önerisi, değilse “şüpheli numara” |
| Vergi numarası boş | Eşitlenmiş unvan benzerliği (0–1) 0,85 ve üstüyse aday çift |
| Silme | Yok. Müşteri ve ürün pasife alınır, sipariş gerekçeyle iptal edilir |
| Stok kodu | Hep metin, sıfırla tamamlama yalnız onaylı kuralla |
| Sipariş numarası | Sistem verir, eski Excel aralığının dışından |
| Renk ve biçim | Veri sayılmaz, anlamı varsa alana çevrilir |
| Eşlenemeyen satır | Sessizce atılmaz: yer tutucu ya da kapsam dışı, kararı yazılı |

## Kim neyi görür, kim neyi değiştirir?

Önerdiğim temel kural: hiçbir kayıt silinmez, her değişiklik bir kişiye bağlıdır. Roller şöyle:

- **Satış temsilcisi:** kendi müşterilerini ve siparişlerini görür, sipariş girer. Başka temsilcinin müşterisini görmez.
- **Sipariş operasyon uzmanı:** bütün siparişleri görür ve girer, durum değiştirir. İptal gerekçe ister.
- **Ana veri sorumlusu:** müşteri ve ürün açar, birleştirme önerilerini onaylar ya da reddeder, yanlış birleştirmeyi geri alır. Sipariş girmez.
- **Finans:** bütün siparişleri ve tutarları görür. Kapsam dışı ve yer tutucu kararlarını verir, kesme ve geri dönüş kararını sipariş operasyonla birlikte verir.
- **Yönetim ve denetçi:** her şeyi ve iz kaydını görür, hiçbir şeyi değiştiremez.
- **Sistem yöneticisi (BT):** kullanıcı açar, rol atar. Veriyi ve kendi rolünü değiştiremez.

Herkesin kendi hesabıyla girmesini öneririm, ortak kullanıcı adıyla iz kaydı anlamını yitirir. Giriş yöntemi ilk adımda yazılı belirlenir.

**İz kaydı**, her değişikliğin silinemeyen satırıdır: kim, ne zaman, hangi kayıt ve alan, eski değer, yeni değer ve kaynak (ekran, göç partisi ya da birleştirme kararı). Göçle gelen kalem, kaynak iziyle Excel’deki satırına bağlıdır. Örnekte “acil” diye boyanmış 3 satırın neden iptal sayılmadığı, kararı verenle kayıtta duruyor.

## Yapay zekâ ne yapar, nerede durur?

Yapay zekâ bu geçişte öneri yapar, karar vermez. Vergi numarası eşleştirmesi, satır hesabı ve kontrol raporları kuralla çalışır. İki yerde işe yarar:

1. **Mükerrer eşleştirme önerisi.** Vergi numarası boş 38 aday çift için model her çifte “aynı / farklı / emin değilim” önerisi ve kısa gerekçe yazar. Örnekteki model kararları da kurgudur, model çalıştırmadım: 31 çifte aynı, 4’üne farklı, 3’üne emin değilim. Ana veri sorumlusu “aynı” denen 2 çifti reddediyor, çünkü bunlar aynı grubun iki ayrı tüzel kişiliği. 29 çift birleşiyor, 9’u ayrı kalıyor. Model kendisi birleştirmez.
2. **Sütun anlamı önerisi.** Siparişler sekmesinin 31 sütunundan 6’sının başlığı belirsiz (“K”, “Durum2”, “Not”, üç başlıksız sütun). Örnekte model 4’ü için anlam öneriyor, sekme sahibi 3’ünü doğruluyor, birini düzeltiyor. Kalan 2’si ayrılmış bir temsilcinin kişisel notları (taşınmadı) ve bir formül yardımcı sütunu.

Modele hiçbir satır yetki filtresinden geçmeden gitmez. Eşleştirme önerisinde model yalnız unvanı ve ili görür, yetkili kişi adı, telefon ve e-posta gitmez. Sütun anlamı için başlık ve maskelenmiş birkaç örnek değer gider. Kesmeden sonra aynı kontrol yeni müşteri açılırken çalışabilir. O zaman model cevabı yalnız kullanıcının görebildiği adları anar: temsilci, başka bir temsilcinin müşterisine benzeyen bir kayıt açarsa yalnız “benzer kayıt var, ana veri sorumlusuna gönderildi” uyarısını görür.

**Kişisel veri nerede?** KVKK’ya göre kişisel veri, kimliği belirli ya da belirlenebilir gerçek kişiye ilişkin her bilgidir ([6698 sayılı Kanun](https://www.mevzuat.gov.tr/mevzuatmetin/1.5.6698.pdf), md. 3). Şirket unvanı bu tanıma girmez, yetkili kişinin adı ve telefonu girer. Şahıs firmasının unvanında gerçek kişinin adı geçer, bu satırları ben kişisel veri gibi ele alırım. Kanun verinin amaçla sınırlı ve ölçülü işlenmesini istiyor (md. 4/2-ç). Kişisel veri taşıyan bir satırı yurt dışında çalışan bir yapay zekâ servisine göndermek 9. maddeye girer. Madde 7499 sayılı Kanun’un 34. maddesiyle değiştirildi ([Resmî Gazete 12.03.2024, sayı 32487](https://www.resmigazete.gov.tr/eskiler/2024/03/20240312-1.htm)), değişiklik 1 Haziran 2024’te yürürlüğe girdi. Maddenin güncel hâlini 15 Ekim 2026’da mevzuat.gov.tr’deki güncel metinden okudum. Hukuki görüş vermiyorum. Hangi alanın modele gittiğini ilk adımın çıktısında yazılı veririm, değerlendirmeyi hukuk danışmanınız yapar.

## Excel, Access ya da Lists yetiyorsa geçişe gerek yok

Geçişi haklı çıkaran dosyanın boyutu değil, üç ihtiyaçtır: temsilcinin yalnız kendi müşterisini görmesi (satır düzeyi yetki), silinemeyen iz kaydı ve siparişin var olmayan müşteriye yazılamaması (yabancı anahtar). Bu üçü gerekmiyorsa geçiş önermem:

- **ERP’nizde ya da muhasebe programınızda bu işin modülü varsa** önce onu sorun.
- **Dosyayı bir ya da iki kişi tutuyorsa** Excel tablosu, veri doğrulama ve birlikte düzenleme yeter. Tek kişilik bir ihtiyaçta yapay zekâ araçlarıyla kendi ekranınızı da kurabilirsiniz, [Excel’den uygulama yapma rehberinde](https://oguzerol.com/excel-i-web-uygulamasina-cevirme/) adım adım anlattım.
- **Access ya da Lists:** örnekteki dosya bu ürünlerin üst sınırlarına yaklaşmıyor. Microsoft belirtimine göre bir Access veritabanı 2 GB’a kadar (sistem nesneleri hariç), 255 eşzamanlı kullanıcıyla çalışıyor ([Microsoft Destek](https://support.microsoft.com/en-us/office/access-specifications-0cf3c66f-9cf2-4e32-9568-98c1025bb47c)). Bir liste 30 milyon öğe alıyor ([Microsoft Learn](https://learn.microsoft.com/en-us/office365/servicedescriptions/sharepoint-online-service-description/sharepoint-online-limits)), liste görünümü eşiği ise 5.000 öğe ve SharePoint Online’da değiştirilemiyor. 41.260 kalem bu eşiğin sekiz katı. Microsoft böyle bir listede sorgunun döndürdüğü öğe sayısını dizinleme ve süzme ile eşiğin altında tutmayı öneriyor ([Microsoft Destek](https://support.microsoft.com/en-us/office/manage-large-lists-and-libraries-in-sharepoint-b8588dae-9387-48c2-9248-c24122f07c59)). Karar sınırlardan değil, yukarıdaki üç ihtiyaçtan çıkar. Ekibiniz küçükse ve bakımı üstlenecek biri şirketteyse, bu üçünü kendi kurulumunuzda o ürünle deneyin. Karşılıyorsa geçişe gerek yok.
- **Ekibiniz Google E-Tablolar’daysa** aynı soru başka sınırlarla gelir, [Google Sheets veritabanı olarak kullanılır mı sayfasında](https://oguzerol.com/google-sheets-veritabani-olarak-kullanmak/) ayrıca yazdım.

## Nasıl başlanır, veri ve kod kimin?

İlk adımda dosyanızın kişisel bilgileri maskelenmiş kopyasında mükerrer ve yetim kayıtlara bakarak kapsamı yazarız, kullanıcıları dinlerim. Çıktısında sekme–tablo eşlemesini, gördüğümüz mükerrer ve yetim kayıtları, kural tablosunu, rol listesini, kesme koşullarını, ilk sürümün kapsamını ve tahmini süresini yazılı veririm. İlk sürümü bilerek dar tutarım: müşteri, ürün ve sipariş tabloları oturmadan fiyat listesine ve tekliflere geçmem, çünkü onların hepsi bu üç tabloya bağlanır.

Uygulama şirketiniz adına açılabilen bir sunucuda (VPS) çalışır. Veri sizindir, istediğiniz zaman Excel ya da CSV olarak alırsınız. Küçük ve orta ölçekli bir ekipte kullanıcı başına lisans yok, maliyet sunucunun aylık ücreti ve bakımdan oluşur. Kaynak kodun tamamı sizin erişiminizdeki bir depoda, çalıştırma talimatı, bağımlılık listesi ve bilinen sınırlar listesiyle durur. Teslimin geri kalanının kapsamı ilk adımda yazılı belirlenir. Müşteri dosyası kişisel veri taşıyabildiği için erişim, güvenlik, barındırma ve bakım gereksinimlerini başlangıçta ayrıca değerlendiririm.

**ERP’niz değişirse ne olur?** Veritabanı ve iz kaydı olduğu gibi kalır. Yeni ERP ile bağlantı kurulup kurulmayacağı ve verinin hangi yönde akacağı ayrı bir kapsam olarak yazılır. ERP’ye yazmak onun içe aktarma imkânına bağlıdır, bunu da görüp yazılı söylerim.

Dosyanızın maskelenmiş bir kopyasını [iletişim sayfasından](https://oguzerol.com/iletisim/) gönderin. İlk görüşmede hangi sekmenin hangi sekmeye adla bağlandığına birlikte bakarız.

## Sıkça Sorulan Sorular

### Geçiş hangi aşamalardan geçer?

Sırası şöyle: ilk inceleme, tablo tasarımı ve göç betiği, provalar, raporların yeniden kurulması, gölge dönem, kesme, geri dönüş penceresi ve ilk ay kapanışı. Örnekte gölge dönem 10 iş günü, geri dönüş penceresi 5 iş günü sürdü. Toplam süreyi dosyanız belirler, tahmini ilk adımda yazılı veririm.

### Dört yılın tamamını taşımak zorunda mıyız?

Hayır. Açık siparişler ve raporların karşılaştırma için kullandığı dönem taşınır, daha eskisi salt okunur Excel arşivinde kalabilir. Geçmiş yıllar sonradan ayrı partiler hâlinde aynı provayla eklenebilir.

### Excel’deki formüller veritabanında ne oluyor?

Formülün sonucu değil, tanımı taşınır. Satır tutarı gibi hesaplar uygulamada her seferinde aynı kuralla yapılır. Geçmişte hesaplanmış ve raporlanmış bir değer saklanacaksa ayrı alan olarak taşınır, hangisinin saklandığı ilk adımda yazılır.

[Başa dön ↑](https://oguzerol.com/excel-sql-veritabani-gecisi/#icerik)

## Bunları da okumak ister misiniz?

[Excel Dosyalarını Birleştirme: Power Query ve OtomasyonExcel dosyalarını birleştirmek için Power Query veya kontrollü aktarım ekranı. Sütun eşleme, mükerrer kayıt ve hatalı satır kontrolleriyle birleştirin.](https://oguzerol.com/excel-dosyalarini-otomatik-birlestirme/)[Google Sheets Veritabanı Olarak Kullanılır mı?Google Sheets veritabanı olarak ne zaman yeterli? Ortak çalışma, API kotaları, kayıt ilişkileri ve erişim sınırlarıyla uygulamaya geçişi değerlendirin.](https://oguzerol.com/google-sheets-veritabani-olarak-kullanmak/)[Excel ve Google Sheets'i Çok Kullanıcılı Web Uygulamasına ÇevirmeExcel veya Google Sheets'te yürüyen işinizi sunucuda çalışan, kişiye göre yetkili ve kayıt geçmişli bir web uygulamasına çeviriyorum. Süreci ve örneği görün.](https://oguzerol.com/excel-web-uygulamasi/)

[Tüm yazılara göz atın →](https://oguzerol.com/yazilarim/)

NE İSTEYEBİLİRSİNİZ

## Nasıl çalışıyorum?
Çalışma saati paketleri

WhatsApp’tan ya da telefonda işinizden ve ihtiyacınızdan bahsedin; **5 ile 40 saat arasında bir çalışma paketinde** anlaşalım, ben gerekenleri yapmaya başlayayım. Aldığınız şey bir takvim aralığı değil, doğrudan sizin işinize harcanacak net mesai. 40 saati üç gün aralıksız çalışarak da kullanabiliriz, bilerek zamana yayıp bir yılda da bitirebiliriz — işin gerektirdiği neyse o. İşin ne kadar süreceğini tahmin etmeye değil, işi yapmaya vakit harcarım; harcadığım her saatin işinizde kalıcı bir karşılığı olur. Faydalı olduğunu düşündüğünüz sürece bu şekilde devam ederiz.

ÇALIŞMA BLOKLARI

## Neden aylık değil?
40 saat 1 hafta mı oluyor?

Aylık sabit ücrette iki taraf da yanlış yere bakar: siz sabit gidere, karşı taraf kaç tane daha böyle sözleşme bağlayabileceğine. Saat üzerinden çalışınca ikimizin de baktığı yer aynı olur — yapılan işin gerçek değeri. "Toplamda ne kadar tutar?" sorusunun peşinen net bir cevabı olmaması bu modelin doğal maliyeti, farkındayım. Ama sonuç üretmeyen bir yapıya aylarca sabit ücret ödemek yerine yalnızca işinize ayrılan nitelikli zamanı ödersiniz, o zamanın nereye gittiğini de baştan sona görürsünüz. Müşterilerimin benimle tekrar tekrar çalışmasının sebebi bu.

5saat10.000₺ + KDVsaat başı 2.000₺[Bu bloğu seç](https://wa.me/905496546489?text=Merhaba%2C%205%20saatlik%20%C3%A7al%C4%B1%C5%9Fma%20blo%C4%9Fu%20hakk%C4%B1nda%20bilgi%20almak%20istiyorum.)

10saat15.000₺ + KDVsaat başı 1.500₺[Bu bloğu seç](https://wa.me/905496546489?text=Merhaba%2C%2010%20saatlik%20%C3%A7al%C4%B1%C5%9Fma%20blo%C4%9Fu%20hakk%C4%B1nda%20bilgi%20almak%20istiyorum.)

20saat24.000₺ + KDVsaat başı 1.200₺[Bu bloğu seç](https://wa.me/905496546489?text=Merhaba%2C%2020%20saatlik%20%C3%A7al%C4%B1%C5%9Fma%20blo%C4%9Fu%20hakk%C4%B1nda%20bilgi%20almak%20istiyorum.)

40saat40.000₺ + KDVsaat başı 1.000₺[Bu bloğu seç](https://wa.me/905496546489?text=Merhaba%2C%2040%20saatlik%20%C3%A7al%C4%B1%C5%9Fma%20blo%C4%9Fu%20hakk%C4%B1nda%20bilgi%20almak%20istiyorum.)
