CSV'den SQL'e Dönüştürücü

CSV verilerini bir veritabanına aktarmak genellikle ya bir yükleme aracı çalıştırmak ya da yalnızca yerel dosyalarda çalışan COPY/LOAD DATA INFILE komutları yazmak anlamına gelir. Küçük veri kümeleri için – onlarca, yüzlerce ya da birkaç bin satır – herhangi bir SQL konsoluna yapıştırabileceğiniz basit INSERT komutları çoğu zaman daha hızlıdır. Bu araç, CSV’nizi ve bir tablo adını alır ve her satır için, tanımlayıcıları ters tırnak (backtick) içinde ve değerleri tek tırnak içinde olan, çalıştırması güvenli birer INSERT komutu üretir.

SQL nasıl derlenir

  1. 1

    CSV'yi yapıştırın

    İsteğe bağlı başlık satırı olan standart CSV. Ayrıştırıcı, içinde ayraç bulunan tırnaklı hücreleri işler.

  2. 2

    Tablo adını belirleyin

    Tablo adındaki harf ve rakam dışındaki karakterler alt çizgiyle değiştirilir; alan boşsa `my_table` kullanılır.

  3. 3

    Sütunlar başlık satırından gelir

    Başlık modu açıksa 1. satır sütun listesi olur. Aksi hâlde sütunlar `column_1`, `column_2` gibi adlandırılır.

  4. 4

    Her veri satırı için bir INSERT

    Her satır `INSERT INTO table (cols) VALUES (...)` hâline gelir. Değerler tek tırnak içine alınır ve değerin içindeki tek tırnaklar ikiye katlanır.

Lehçe, tırnak kullanımı ve ne zaman başka bir yola başvurmalı

Üreteç, tanımlayıcıların etrafında ters tırnak ve değerlerin etrafında tek tırnak kullanan MySQL tarzı SQL üretir. Çoğu veritabanı bunu küçük düzenlemelerle kabul eder.

Lehçe hızlı başvuru tablosu

Veritabanı Tanımlayıcı tırnaklaması Notlar
MySQL ters tırnak Değişmeden çalışır.
MariaDB ters tırnak Değişmeden çalışır.
PostgreSQL çift tırnak Çalıştırmadan önce ` yerine " koyun.
SQLite çift tırnak ` yerine " koyun ya da tanımlayıcı tırnaklamasını kaldırın.
SQL Server köşeli parantez ` yerine [] koyun; Unicode için N'...' kullanımına dikkat edin.

Değerler nasıl kaçışlanır

Tüm değerler tek tırnak içine alınır ve değerin içindeki tek tırnaklar ikiye katlanır (O'Brien, 'O''Brien' olur). Bu, SQL-92 standardının yöntemidir ve tüm yaygın veritabanlarında çalışır. Dönüştürücü tür dönüşümü yapmaz; her şey karakter dizisi (string) olarak üretilir, dolayısıyla sütun INT olduğunda veritabanının örtük dönüşümü '42' değerini tam sayıya çevirir.

Temiz içe aktarım için ipuçları

  • Önce tabloyu oluşturun. Dönüştürücü yalnızca INSERT komutları üretir, CREATE TABLE üretmez. Elle tanımladığınız veya ORM’unuzdan ürettiğiniz bir şemayla birlikte kullanın.
  • Büyük dosyaları parçalayın. SQL istemcinizin komut boyutu sınırı varsa her seferinde 500–1000 satır yapıştırın.
  • Bir işleme (transaction) sarın. Birkaç yüz satırdan fazlası için yapıştırdığınız bloğu BEGIN; ve COMMIT; (veya START TRANSACTION;/COMMIT;) arasına alın. Bu, her komutu tek tek otomatik onaylamaktan çok daha hızlıdır.

SQL üretmeyi ne zaman atlamalı

Dosyanızda yaklaşık 50.000’den fazla satır varsa, yerel toplu yükleyiciler (Postgres’te COPY, MySQL’de LOAD DATA INFILE, SQL Server’da bcp) betikle üretilen INSERT komutlarından kat kat hızlıdır. Bu araç hızlı içe aktarımlar, test verisi ekleme ve tek seferlik geçişler için tasarlanmıştır.

Sık Sorulan Sorular

Hayır. Yalnızca INSERT komutları üretir. Şemayı önceden CREATE TABLE ile kendiniz tanımlayın; böylece sütun türlerini, uzunluklarını ve kısıtlamalarını dönüştürücünün tahminine bırakmak yerine kendiniz denetlersiniz.

Tek bir değişiklikle: tablo ve sütun adlarının etrafındaki ters tırnaklı tanımlayıcıları çift tırnakla değiştirin. Değerler tek tırnak içinde olduğundan herhangi bir SQL-92 lehçesinde değişmeden çalışır.

Değerlerin içindeki tek tırnaklar ikiye katlanır (O''Brien); bu, standart SQL kaçış yöntemidir. Ters eğik çizgi, yüzde işareti ve alt çizgi harfi harfine geçer; yalnızca LIKE kalıplarında özel bir anlam kazanır.

Evet. SQL’in oluşturulabilmesi için CSV sunucumuza gönderilir. Saklanmaz ve sayfa bağlantısına eklenmez.

İlgili Araçlar

Araç diğer dillerde mevcuttur