DevToolPal
PL

Konwerter CSV na SQL

Zamienia CSV na instrukcje CREATE TABLE i INSERT dla MySQL, PostgreSQL, SQLite lub SQL Server z wykrytymi typami kolumn.

Działa lokalnie, nic nie jest wysyłane

Opcje

Wejście

0 znaków · 0 B

Wynik

0 znaków · 0 B

Do czego służy

Wczytanie arkusza do bazy danych zwykle oznacza ręczne pisanie definicji tabeli i długiej listy instrukcji INSERT z escapowaniem każdego apostrofu. To narzędzie zrobi to za Ciebie: wklej CSV i otrzymaj gotowy do uruchomienia skrypt SQL z instrukcją CREATE TABLE i wielowierszowymi instrukcjami INSERT podzielonymi na partie.

Narzędzie stosuje RFC 4180: obsługuje pola w cudzysłowach, przecinki i znaki nowego wiersza w komórkach oraz podwojone cudzysłowy. Ciągi są poprawnie escapowane dla wybranej bazy, łącznie z ukośnikami wstecznymi w MySQL i ciągami Unicode N'…' w SQL Server.

Jak używać

  1. Wklej CSV, wgraj plik .csv lub .tsv albo kliknij Przykład.
  2. Wpisz Nazwę tabeli. Schemat oddziel kropką, np. public.orders lub dbo.orders.
  3. Wybierz Dialekt: MySQL / MariaDB, PostgreSQL, SQLite lub SQL Server.
  4. Wybierz liczbę Wierszy na INSERT i wyłącz CREATE TABLE, jeśli tabela już istnieje.
  5. Skopiuj SQL lub pobierz go jako plik .sql i uruchom w kliencie bazy danych.

Separator jest wykrywany automatycznie; możesz też wybrać przecinek, średnik, tabulator lub kreskę pionową. Jeśli pierwszy wiersz zawiera dane, a nie nazwy kolumn, wyłącz Pierwszy wiersz to nagłówek — kolumny otrzymają nazwy column_1, column_2 itd.

Przykład

Taki plik CSV:

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

zamienia się w taki skrypt dla PostgreSQL:

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);

Apostrof w Ada's zostaje podwojony, pusta cena staje się NULL, a liczby i wartości logiczne są zapisane bez cudzysłowów.

Typy i dialekty

  • MySQL / MariaDB: identyfikatory w grawisach, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) lub TEXT; ukośniki wsteczne w ciągach są escapowane.
  • PostgreSQL: identyfikatory w podwójnych cudzysłowach, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP i TEXT.
  • SQLite: identyfikatory w podwójnych cudzysłowach i klasy przechowywania SQLite INTEGER, REAL i TEXT; wartości logiczne zapisywane są jako 1 i 0.
  • SQL Server: identyfikatory w nawiasach kwadratowych, INT, DECIMAL, BIT, DATE, DATETIME2 i NVARCHAR, literały N'…' i najwyżej 1000 wierszy na INSERT.
  • Puste komórki stają się NULL. Wyłącz Puste komórki jako NULL, aby zachować puste ciągi w kolumnach tekstowych.
  • Przed uruchomieniem skryptu na danych produkcyjnych sprawdź wykryte typy: kolumna, która w próbce ma tylko małe liczby, może później potrzebować szerszego typu.

FAQ

› Jakie bazy danych są obsługiwane?

MySQL (i MariaDB), PostgreSQL, SQLite oraz Microsoft SQL Server. Dialekt decyduje o tym, jak cytowane są nazwy tabel i kolumn, jak escapowane są ciągi, jakie typy kolumn są używane i jak zapisywane są wartości logiczne.

› Jak dobierane są typy kolumn?

Każda kolumna jest analizowana: liczby całkowite stają się INT lub BIGINT, dziesiętne DECIMAL o wystarczającej precyzji, true/false BOOLEAN (BIT w SQL Server), daty ISO DATE lub DATETIME, a cała reszta tekstem. Liczby z zerami na początku, jak kody pocztowe, pozostają tekstem. Wyłącz Wykrywaj typy, aby wszystkie kolumny były tekstowe.

› Dlaczego SQL Server ma limit 1000 wierszy na INSERT?

SQL Server odrzuca listę VALUES dłuższą niż 1000 wierszy, więc w tym dialekcie większe partie są ograniczane do 1000. Inne bazy przyjmują większe partie, ale 100–1000 wierszy na instrukcję to dobry kompromis między szybkością a rozmiarem.

› Czy mój plik CSV jest gdzieś wysyłany?

Nie. Parsowanie i generowanie SQL odbywają się w całości w przeglądarce, więc dane nigdy nie opuszczają Twojego urządzenia.