Konwerter SQL na CSV

Czasami jedyną kopią potrzebnych danych jest plik .sql z kopii zapasowej, zrzut instrukcji INSERT INTO users (id, email, created_at) VALUES (...). Wczytywanie go do bazy danych tylko po to, by znów go wyeksportować, jest powolne. Ten konwerter odczytuje listę kolumn i każdą krotkę VALUES bezpośrednio ze składni INSERT i tworzy plik CSV, który możesz otworzyć w Excelu, Arkuszach Google, Numbers lub pandas bez odtwarzania schematu.

Jak przekonwertować instrukcje INSERT SQL na CSV

  1. 1

    Wklej SQL

    Wrzuć jedną lub więcej instrukcji INSERT. Obsługiwane są bloki VALUES (...) zarówno jedno-, jak i wielowierszowe.

  2. 2

    Kolumny wykrywane automatycznie

    Parser odczytuje listę `(col1, col2, ...)` tuż przed VALUES i traktuje ją jako wiersz nagłówka CSV.

  3. 3

    Wyodrębnione wiersze

    Każda krotka `(val1, val2, ...)` staje się wierszem CSV. Ciągi w pojedynczych cudzysłowach są pozbawiane cudzysłowów; liczby i wartości NULL przechodzą jako tekst.

  4. 4

    Skopiuj CSV

    Weź wynik CSV i wklej go do arkusza kalkulacyjnego lub zapisz z rozszerzeniem `.csv`.

Co akceptuje parser

INSERT INTO users (id, email, created_at) VALUES
  (1, 'alice@example.com', '2024-01-12 09:00:00'),
  (2, 'bob@example.com',   '2024-01-13 10:30:00'),
  (3, 'carol@example.com', '2024-01-13 11:15:00');

Staje się:

id,email,created_at
1,alice@example.com,2024-01-12 09:00:00
2,bob@example.com,2024-01-13 10:30:00
3,carol@example.com,2024-01-13 11:15:00

Stosowane reguły escapowania CSV

  • Separatorem jest zawsze przecinek; nie ma opcji wyboru separatora.
  • Pola zawierające przecinki, cudzysłowy podwójne lub znaki nowej linii są ujmowane w cudzysłowy podwójne.
  • Wewnętrzne cudzysłowy podwójne są podwajane (" staje się ""), zgodnie z RFC 4180.
  • Początkowe i końcowe pojedyncze cudzysłowy z literałów tekstowych SQL są usuwane.
  • NULL z SQL przechodzi jako dosłowny tekst NULL; zamień go dalej, jeśli Twoje narzędzie oczekuje pustych komórek.

Ograniczenia, o których warto wiedzieć

  • Lista kolumn wymagana. Parser odczytuje nagłówek z listy (col1, col2, ...) przed VALUES. Samo INSERT INTO t VALUES (...) bez listy kolumn tworzy wiersze CSV bez nagłówka.
  • Jedna tabela naraz. Jeśli Twój zrzut miesza instrukcje INSERT dla różnych tabel, najpierw je rozdziel. Wiersze o różnej szerokości tworzą nieregularny plik CSV.
  • Brak analizy CREATE TABLE. Typy kolumn nie są używane. Daty, JSON i binarne bloby przechodzą jako surowy tekst.
  • Każda grupa nawiasów staje się wierszem. Parser zamienia każdą grupę (...) w wiersz, więc klauzule końcowe zawierające nawiasy (ON DUPLICATE KEY UPDATE, RETURNING), wywołania funkcji takie jak NOW() lub zagnieżdżone tablice takie jak (1,2,3) wewnątrz wartości dodają zbędne wiersze. Ogranicz dane wejściowe do prostych krotek INSERT ... VALUES i zastąp takie wyrażenia literałami przed wklejeniem.

Najczęściej zadawane pytania

Tak, o ile instrukcja INSERT ma standardową postać INSERT INTO table (cols) VALUES (...), wspólną dla tych baz danych. Narzędzie nie uruchamia pełnego parsera SQL: wyodrębnia listę kolumn i krotki wartości w nawiasach, więc każdą instrukcję pozostaw w prostej składni INSERT.

Przecinki wewnątrz ciągów SQL w pojedynczych cudzysłowach są zachowywane. W wyniku każde pole zawierające przecinek, cudzysłów lub znak nowej linii jest ujmowane w cudzysłowy podwójne, a wewnętrzne cudzysłowy są podwajane, zgodnie z RFC 4180. Wartości zawierające same nawiasy mogą nie zostać poprawnie rozdzielone.

Nie. Twój SQL jest wysyłany na nasz serwer, analizowany w jednym przebiegu i zwracany, więc ogranicz dane wejściowe do kilku megabajtów naraz. W przypadku bardzo dużych zrzutów podziel plik na fragmenty (jeden blok INSERT na fragment) i konwertuj je częściami.

Nie, wynikiem jest płaski plik CSV. Typy kolumn, indeksy i ograniczenia znajdują się w CREATE TABLE i są poza zakresem tego konwertera.

Twój SQL jest wysyłany na nasz serwer tylko po to, by utworzyć plik CSV, i nie jest przechowywany; zachowujemy anonimową liczbę przekonwertowanych wierszy, nigdy samego tekstu SQL.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach