Generator instrukcji SQL INSERT

Generuj kwerendy SQL INSERT z danych CSV lub formularza. Obsługuje MySQL, PostgreSQL, SQLite. Bulk insert, escape wartości. Bezpłatnie.

Bez konta
Bez instalacji
Bezpłatnie
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
79 znaków

Instrukcji INSERT

25

Tabela

customers

Dialekt SQL

MySQL / MariaDB

Linie

33

Rozmiar

4,1 KB
-- Dane testowe: generator instrukcji SQL INSERT (webp.pl)
-- Wierszy: 25 | Dialekt: mysql
-- Format kolumn: nazwa:typ (int, uuid, email, varchar(n), text, date, datetime, boolean, decimal, json, enum(a,b,c))

START TRANSACTION;

INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (1, 'Piotr Woźniak', '[email protected]', '2026-11-09 22:46:33', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (2, 'Katarzyna Nowak', '[email protected]', '2026-11-09 22:45:56', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (3, 'Tomasz Szymański', '[email protected]', '2026-11-09 22:45:19', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (4, 'Magdalena Wiśniewska', '[email protected]', '2026-11-09 22:44:42', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (5, 'Paweł Dąbrowski', '[email protected]', '2026-11-09 22:44:05', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (6, 'Agnieszka Wójcik', '[email protected]', '2026-11-09 22:43:28', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (7, 'Michał Mazur', '[email protected]', '2026-11-09 22:42:51', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (8, 'Joanna Kamińska', '[email protected]', '2026-11-09 22:42:14', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (9, 'Krzysztof Kaczmarek', '[email protected]', '2026-11-09 22:41:37', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (10, 'Zofia Lewandowska', '[email protected]', '2026-11-09 22:41:00', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (11, 'Jakub Jankowski', '[email protected]', '2026-11-09 22:40:23', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (12, 'Anna Woźniak', '[email protected]', '2026-11-09 22:39:46', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (13, 'Piotr Nowak', '[email protected]', '2026-11-09 22:39:09', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (14, 'Katarzyna Szymańska', '[email protected]', '2026-11-09 22:38:32', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (15, 'Tomasz Wiśniewski', '[email protected]', '2026-11-09 22:37:55', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (16, 'Magdalena Dąbrowska', '[email protected]', '2026-11-09 22:37:18', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (17, 'Paweł Wójcik', '[email protected]', '2026-11-09 22:36:41', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (18, 'Agnieszka Mazur', '[email protected]', '2026-11-09 22:36:04', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (19, 'Michał Kamiński', '[email protected]', '2026-11-09 22:35:27', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (20, 'Joanna Kaczmarek', '[email protected]', '2026-11-09 22:34:50', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (21, 'Krzysztof Lewandowski', '[email protected]', '2026-11-09 22:34:13', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (22, 'Zofia Jankowska', '[email protected]', '2026-11-09 22:33:36', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (23, 'Jakub Zieliński', '[email protected]', '2026-11-09 22:32:59', 0);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (24, 'Anna Nowak', '[email protected]', '2026-11-09 22:32:22', 1);
INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (25, 'Piotr Szymański', '[email protected]', '2026-11-09 22:31:45', 0);

COMMIT;

Wiersze opisują dokładnie to, co silnik wpisuje do wyniku przy aktualnych ustawieniach formularza — łącznie z pierwszą instrukcją wygenerowaną dla Twojej tabeli i kolumn.

Składnia INSERT generowana przez narzędzie (jedno INSERT na wiersz)
ElementW generowanym kodzieZnaczenie
Instrukcja INSERT INTO tabela (kolumny) VALUES (…); jedno INSERT na wiersz danych — silnik NIE skleja wielu wierszy w jedno wielowierszowe VALUES (buildSql pętli po wierszach)
Cytowanie identyfikatorów `tabela`, `kolumna` MySQL: grawisy; PostgreSQL i SQLite: cudzysłowy (dialectQuoter); podwojenie znaku cytuje sam znak wewnątrz nazwy
Escape apostrofów znak ' → '' standard SQL: apostrof w tekście podwaja się (escapeStr) — dotyczy każdej wartości tekstowej, także JSON-a
Transakcja (opcja „Komentarz nagłówka i transakcja”) START TRANSACTION; … COMMIT; komentarz z liczbą wierszy i dialektem, BEGIN/START TRANSACTION na początku i COMMIT na końcu
Przykład (z silnika) INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (1, 'Piotr Woźniak', '[email protected]', '2026-11-09 22:46:33', 0); pierwsza instrukcja wygenerowana dla bieżącego formularza (wiersz 1, bez nagłówka)

Kolumny podajesz w formacie nazwa:typ (albo nazwa|typ), po jednej w wierszu — puste linie i wpisy bez dwukropka są pomijane, typ jest normalizowany do małych liter.

Wartości przykładowe dokłane przez silnik dla każdego typu (wiersz 3)
Typ kolumnyPrzykładowa wartośćSkąd się bierze
int 3 kolejny numer wiersza
uuid '775ede93-03f3-4c2b-a088-6694cb05a873' losowy UUID v4 (random_bytes)
email '[email protected]' [email protected] / example.org / demo.test / mail.test
full_name 'Tomasz Szymański' imiona i nazwiska z pul silnika
varchar(24) 'Las miasto książka herba' polskie słowa, obcięte do długości; kolumny nazwane jak imię, nazwisko, e-mail lub miasto dostają pasujące dane
text 'Las miasto książka herbata słońce rzeka' to samo źródło słów, bez limitu długości
date '2026-11-06' data wstecz o (numer wiersza % 365) dni
datetime '2026-11-09 22:45:19' czas wstecz o (numer wiersza × 37 s % 20 000 s)
boolean 0 naprzemiennie 0/1 (parzystość wiersza)
decimal 3.25 reszta z dzielenia przez 97 plus 0,25
json '{"id":3,"tag":"demo","active":false}' poprawny JSON {id, tag, active} w apostrofach
enum(basic,pro,team) 'basic' losowa opcja z listy w nawiasie

Typy uuid i enum(…) są losowe (random_bytes / array_rand), więc każdy przebieg daje inne wartości — to celowe, dane testowe mają się różnić między wierszami.

Warto wiedzieć — dane testowe w SQL

Wiele INSERT-ów czy jedno VALUES?

To narzędzie generuje osobną instrukcję dla każdego wiersza — łatwiej wyłuskać problematyczny rekord z logu błędu. Przy dużych wolumenach szybsze bywa wielowierszowe VALUES (…),(…) albo COPY/LOAD DATA; transakcja z opcji „Header” i tak spina całość w jedną atomową jednostkę.

Escape apostrofów

Podwajanie apostrofu (' → '') to standard SQL wspólny dla MySQL, PostgreSQL i SQLite. To wystarcza dla danych testowych, ale prawdziwe aplikacje powinny używać parametryzowanych zapytań / prepared statements — składanie SQL z danych wejściowych to prosta droga do SQL injection.

Różnice dialektów

MySQL cytuje identyfikatory grawisami (`), PostgreSQL i SQLite cudzysłowami ("); transakcję otwiera START TRANSACTION albo BEGIN. Ten sam plik SQL nie zawsze przejdzie w drugiej bazie — wybierz dialekt zgodny z celem przed wygenerowaniem.

Fałszywe, nie prawdziwe dane

Silnik produkuje dane fikcyjne ([email protected], słowa fonetyczne) — nie wrzucaj do seedów ani backupów testowych prawdziwych e-maili czy numerów PESEL. Do wymagających realności zbiorów użyj bibliotek typu Faker, a przed udostępnieniem zrzutu i tak zanonimizuj kolumny wrażliwe.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Podaj dalej

Komuś też się przyda?

Wyślij znajomemu link. Otworzy narzędzie od razu, bez konta i bez opłat.

Generator instrukcji SQL INSERT – bulk insert z CSV i formularza

Ręczne pisanie kwerend INSERT dla wielu rekordów jest żmudne i podatne na błędy. Generator automatycznie tworzy poprawne instrukcje INSERT INTO z danych wklejonych z arkusza kalkulacyjnego, CSV lub formularza, z obsługą różnych dialektów SQL.

generator SQL INSERT kwerenda INSERT SQL bulk insert SQL SQL INSERT generator online

Składnia SQL INSERT

INSERT INTO tabela (kol1, kol2) VALUES (val1, val2). Bulk insert: INSERT INTO tabela (kol1, kol2) VALUES (v1,v2),(v3,v4),(v5,v6). MySQL: do 65535 wierszy naraz. PostgreSQL: bez limitu (praktycznie). SQLite: INSERT OR REPLACE INTO (upsert). INSERT INTO ... SELECT ...: kopiuj z innej tabeli. INSERT IGNORE (MySQL): pomiń błędy duplikatów.

Escaping wartości w SQL

Stringi: otocz apostrofami. Apostrofy w wartości: podwój: O'Connor → 'O''Connor'. Parametryzowane zapytania: bezpieczniejsze (?, $1, :name). NULL: bez apostrofów. Liczby: bez apostrofów. Daty: zależy od bazy. MySQL: '2024-01-15'. PostgreSQL: '2024-01-15'::date. Uwaga: SQL injection! Nigdy nie wklejaj nieoczyszczonych danych użytkownika do SQL.

Bulk insert – wydajność

Bulk insert znacznie szybszy niż pojedyncze INSERT w pętli. MySQL: INSERT INTO t VALUES (1,2),(3,4),(5,6) = jedna transakcja. Transakcje: BEGIN; INSERT; INSERT; COMMIT; – szybsze niż autocommit. Wyłącz indeksy przed bulk: ALTER TABLE t DISABLE KEYS; INSERT...; ENABLE KEYS; (MySQL). PostgreSQL: COPY jest najszybszy dla dużych danych. SQLite: journal_mode=WAL + jedna transakcja.

Dialekty SQL – różnice INSERT

MySQL: INSERT IGNORE (pomiń błędy), INSERT ... ON DUPLICATE KEY UPDATE (upsert). PostgreSQL: INSERT ... ON CONFLICT DO NOTHING/UPDATE (upsert). SQLite: INSERT OR REPLACE / INSERT OR IGNORE. SQL Server: MERGE INTO (upsert). Oracle: MERGE INTO. Standard SQL: brak wbudowanego upsert (był od SQL:2003 jako MERGE). Sprawdź dokumentację swojej bazy.

Najczęstsze pytania

Jak wygenerować INSERT z arkusza Excel/Google Sheets?

Metoda 1: Formuła concatenate: ="INSERT INTO users (name, email) VALUES ('",A2,"','",B2,"');" Metoda 2: Kopiuj → CSV → wklej do generatora online. Metoda 3: Python pandas: df.to_sql("users", engine) lub ręcznie generuj INSERT. Metoda 4: DBeaver/DataGrip: import CSV bezpośrednio do tabeli. Generator online: wklej dane tabelaryczne, wybierz kolumny, generuj.

Jak bezpiecznie wstawiać dane do SQL (SQL injection)?

Nigdy: $sql = "INSERT INTO users (name) VALUES ('" . $userInput . "')". Zawsze: prepared statements (PDO PHP: $stmt->bindParam(), Java PreparedStatement, Python cursor.execute("%s")). ORM: Eloquent, SQLAlchemy, Django ORM automatycznie parametryzują. Walidacja: sprawdź typ danych przed wstawieniem. Uprawnienia: użytkownik bazy tylko INSERT, nie DROP/ALTER.

Jak sprawdzić ile rekordów INSERT wstawiło?

MySQL: SELECT ROW_COUNT() po INSERT. PHP PDO: $pdo->lastInsertId() (ostatnie ID). $stmt->rowCount() (liczba wstawionych). PostgreSQL: INSERT INTO ... RETURNING id (zwraca wstawione rekordy). JDBC Java: getUpdateCount(). Python: cursor.rowcount. Transakcja: COMMIT zwraca liczbę zmienionych wierszy w niektórych klientach.

Jaka jest różnica między INSERT a UPSERT?

INSERT: wstaw nowy rekord. Błąd jeśli klucz istnieje (duplicate key). UPSERT (insert or update): jeśli istnieje → aktualizuj, jeśli nie → wstaw. MySQL: INSERT INTO t VALUES (...) ON DUPLICATE KEY UPDATE col=VALUES(col). PostgreSQL: INSERT INTO t VALUES (...) ON CONFLICT (id) DO UPDATE SET col=EXCLUDED.col. Zastosowanie: synchronizacja danych, idempotentne operacje.

Jak importować duże pliki CSV do bazy SQL?

MySQL: LOAD DATA INFILE 'plik.csv' INTO TABLE t FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'. PostgreSQL: COPY t FROM 'plik.csv' CSV HEADER. SQLite: .import plik.csv tabela (w sqlite3 CLI). Szybkość: LOAD DATA/COPY znacznie szybsze niż INSERT row by row. PHP: PDO + fgetcsv() + bulk INSERT (1000 rows/batch).

Powiązane narzedzia: kwerenda SQL SELECT generator, formatter SQL i tester zapytań SQL.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!