DevToolPal
TR

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

CSV’yi MySQL, PostgreSQL, SQLite veya SQL Server için CREATE TABLE ve INSERT ifadelerine dönüştürün; sütun türleri otomatik çıkarılır.

Yerelde çalışır, asla yüklenmez

Seçenekler

Girdi

0 karakter · 0 B

Çıktı

0 karakter · 0 B

Ne işe yarar

Bir elektronik tabloyu veritabanına yüklemek genellikle tablo tanımını ve uzun bir INSERT ifadesi listesini elle yazmak, her kesme işaretini tek tek kaçışlamak demektir. Bu araç bunu sizin yerinize yapar: CSV’yi yapıştırın, bir CREATE TABLE ifadesi ve toplu hâlde çok satırlı INSERT ifadeleri içeren, çalıştırmaya hazır bir SQL betiği alın.

RFC 4180’e uyar: tırnak içindeki alanları, hücre içindeki virgülleri ve satır sonlarını, çift yazılmış tırnakları işler. Dizeler seçilen veritabanına göre doğru kaçışlanır; MySQL’deki ters eğik çizgiler ve SQL Server’ın N'…' Unicode dizeleri de dahil.

Nasıl kullanılır

  1. CSV yapıştırın, bir .csv veya .tsv dosyası yükleyin ya da Örnek’e tıklayın.
  2. Tablo adı’nı girin. Şema için nokta kullanın, örneğin public.orders veya dbo.orders.
  3. Lehçe’yi seçin: MySQL / MariaDB, PostgreSQL, SQLite veya SQL Server.
  4. INSERT başına satır sayısını seçin; tablo zaten varsa CREATE TABLE’ı kapatın.
  5. SQL’i kopyalayın ya da .sql dosyası olarak indirip veritabanı istemcinizle çalıştırın.

Ayırıcı otomatik algılanır; virgül, noktalı virgül, sekme veya dikey çizgiyi açıkça da seçebilirsiniz. İlk satır sütun adları değil de veri içeriyorsa İlk satır başlık seçeneğini kapatın; sütunlar column_1, column_2 vb. olarak adlandırılır.

Örnek

Şu CSV:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

PostgreSQL için şu betiğe dönüşür:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

Ada's içindeki kesme işareti iki kez yazılır, boş fiyat NULL olur, sayılar ve mantıksal değerler tırnaksız yazılır.

Türler ve lehçeler

  • MySQL / MariaDB: ters tırnaklı tanımlayıcılar, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) veya TEXT; dizelerdeki ters eğik çizgiler kaçışlanır.
  • PostgreSQL: çift tırnaklı tanımlayıcılar, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP ve TEXT.
  • SQLite: çift tırnaklı tanımlayıcılar ve SQLite’ın depolama sınıfları INTEGER, REAL ve TEXT; mantıksal değerler 1 ve 0 olarak yazılır.
  • SQL Server: köşeli parantezli tanımlayıcılar, INT, DECIMAL, BIT, DATE, DATETIME2 ve NVARCHAR; dize sabitleri N'…' biçimindedir ve INSERT başına en fazla 1000 satır vardır.
  • Boş hücreler NULL olur. Metin sütunlarında boş dizeleri korumak için Boş hücreler NULL olsun seçeneğini kapatın.
  • Betiği üretim verisinde çalıştırmadan önce çıkarılan türleri kontrol edin: örnekte yalnızca küçük sayılar bulunan bir sütun ileride daha geniş bir tür gerektirebilir.

SSS

› Hangi veritabanları destekleniyor?

MySQL (ve MariaDB), PostgreSQL, SQLite ve Microsoft SQL Server. Seçilen lehçe; tablo ve sütun adlarının nasıl tırnaklanacağını, dizelerin nasıl kaçışlanacağını, hangi sütun türlerinin kullanılacağını ve mantıksal değerlerin nasıl yazılacağını belirler.

› Sütun türleri nasıl seçilir?

Her sütun taranır: tam sayılar INT veya BIGINT, ondalık sayılar yeterli hassasiyette DECIMAL, true/false BOOLEAN (SQL Server’da BIT), ISO tarihleri DATE veya DATETIME, geri kalan her şey metin olur. Posta kodları gibi başında sıfır olan sayılar metin olarak kalır. Tüm sütunları metin yapmak için Türleri algıla’yı kapatın.

› SQL Server neden INSERT başına 1000 satırla sınırlı?

SQL Server 1000 satırdan uzun bir VALUES listesini reddeder; bu yüzden bu lehçede daha büyük toplu boyutlar 1000 ile sınırlanır. Diğer veritabanları daha büyük toplu işlemleri kabul eder, ama ifade başına 100–1000 satır hız ile boyut arasında iyi bir dengedir.

› CSV dosyam bir yere yükleniyor mu?

Hayır. Ayrıştırma ve SQL üretimi tamamen tarayıcınızda yapılır; veriler cihazınızdan hiç çıkmaz.