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.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Instrukcji INSERT
Tabela
Dialekt SQL
Linie
Rozmiar
-- Generated by SQL Insert Statements Generator -- Rows: 25 | Dialect: mysql -- Column format: name:type (supports 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, 'Bravo charlie delta echo', '[email protected]', '2026-10-20 14:52:12', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (2, 'Charlie delta echo foxtrot golf', '[email protected]', '2026-10-20 14:51:35', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (3, 'Delta echo foxtrot golf hotel india', '[email protected]', '2026-10-20 14:50:58', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (4, 'Echo foxtrot golf hotel india juliet kilo', '[email protected]', '2026-10-20 14:50:21', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (5, 'Foxtrot golf hotel india juliet kilo lima mango', '[email protected]', '2026-10-20 14:49:44', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (6, 'Golf hotel india', '[email protected]', '2026-10-20 14:49:07', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (7, 'Hotel india juliet kilo', '[email protected]', '2026-10-20 14:48:30', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (8, 'India juliet kilo lima mango', '[email protected]', '2026-10-20 14:47:53', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (9, 'Juliet kilo lima mango nova orbit', '[email protected]', '2026-10-20 14:47:16', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (10, 'Kilo lima mango nova orbit pixel quantum', '[email protected]', '2026-10-20 14:46:39', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (11, 'Lima mango nova orbit pixel quantum rocket sunset', '[email protected]', '2026-10-20 14:46:02', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (12, 'Mango nova orbit', '[email protected]', '2026-10-20 14:45:25', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (13, 'Nova orbit pixel quantum', '[email protected]', '2026-10-20 14:44:48', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (14, 'Orbit pixel quantum rocket sunset', '[email protected]', '2026-10-20 14:44:11', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (15, 'Bravo charlie delta echo foxtrot golf', '[email protected]', '2026-10-20 14:43:34', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (16, 'Delta echo foxtrot golf hotel india juliet', '[email protected]', '2026-10-20 14:42:57', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (17, 'Foxtrot golf hotel india juliet kilo lima mango', '[email protected]', '2026-10-20 14:42:20', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (18, 'Bravo charlie delta', '[email protected]', '2026-10-20 14:41:43', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (19, 'Delta echo foxtrot golf', '[email protected]', '2026-10-20 14:41:06', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (20, 'Foxtrot golf hotel india juliet', '[email protected]', '2026-10-20 14:40:29', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (21, 'Hotel india juliet kilo lima mango', '[email protected]', '2026-10-20 14:39:52', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (22, 'Juliet kilo lima mango nova orbit pixel', '[email protected]', '2026-10-20 14:39:15', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (23, 'Lima mango nova orbit pixel quantum rocket sunset', '[email protected]', '2026-10-20 14:38:38', 0); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (24, 'Hotel india juliet', '[email protected]', '2026-10-20 14:38:01', 1); INSERT INTO `customers` (`id`, `full_name`, `email`, `created_at`, `is_active`) VALUES (25, 'Juliet kilo lima mango', '[email protected]', '2026-10-20 14:37:24', 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.
| Element | W generowanym kodzie | Znaczenie |
|---|---|---|
| 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 „Header”) | 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, 'Bravo charlie delta echo', '[email protected]', '2026-10-20 14:52:12', 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.
| Typ kolumny | Przykładowa wartość | Skąd się bierze |
|---|---|---|
| int | 3 | kolejny numer wiersza |
| uuid | '19fe5413-f59b-40a4-ba5d-443cf1b3c2fc' | losowy UUID v4 (random_bytes) |
| '[email protected]' | [email protected] / demo.test / toolsti.dev / mail.test | |
| full_name | 'Taylor Hayes' | imiona i nazwiska z pul silnika |
| varchar(24) | 'Delta echo foxtrot golf ' | słowa alfabetu fonetycznego, obcięte do długości |
| text | 'Delta echo foxtrot golf hotel india' | to samo źródło słów, bez limitu długości |
| date | '2026-10-17' | data wstecz o (numer wiersza % 365) dni |
| datetime | '2026-10-20 14:50:58' | 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) | 'team' | 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ć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.
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.