Konwerter CSV na SQL

Wprowadzenie danych CSV do bazy zwykle oznacza albo uruchomienie narzędzia ładującego, albo napisanie poleceń COPY / LOAD DATA INFILE, które działają tylko na plikach lokalnych. Dla małych zbiorów, dziesiątki, setki, kilka tysięcy wierszy, zwykłe instrukcje INSERT, które wklejasz do dowolnej konsoli SQL, są często szybsze. To narzędzie bierze twój CSV, bierze nazwę tabeli i tworzy jeden INSERT na wiersz z identyfikatorami w grawisach i wartościami w pojedynczych cudzysłowach, które można bezpiecznie uruchomić.

Jak składany jest SQL

  1. 1

    Wklej CSV

    Standardowy CSV z opcjonalnym wierszem nagłówka. Parser obsługuje komórki w cudzysłowie z osadzonymi separatorami.

  2. 2

    Ustaw nazwę tabeli

    Znaki niealfanumeryczne w nazwie tabeli zastępowane są podkreśleniami; wraca do `my_table`, jeśli pusta.

  3. 3

    Kolumny pochodzą z nagłówka

    Jeśli tryb nagłówka jest włączony, wiersz 1 staje się listą kolumn. W przeciwnym razie kolumny nazywane są `column_1`, `column_2` itd.

  4. 4

    Jeden INSERT na wiersz danych

    Każdy wiersz staje się `INSERT INTO table (cols) VALUES (...)`. Wartości są w pojedynczych cudzysłowach, a wewnętrzne cudzysłowy podwajane.

Dialekt, cudzysłowy i kiedy sięgnąć po coś innego

Generator tworzy SQL w stylu MySQL z grawisami wokół identyfikatorów i pojedynczymi cudzysłowami wokół wartości. Większość baz przyjmie go z drobnymi poprawkami.

Ściąga dialektów

Baza danych Cytowanie identyfikatorów Uwagi
MySQL grawisy Działa bez zmian.
MariaDB grawisy Działa bez zmian.
PostgreSQL podwójne cudzysłowy Zamień ` na " przed uruchomieniem.
SQLite podwójne cudzysłowy Zamień ` na " albo usuń cytowanie identyfikatorów.
SQL Server nawiasy kwadratowe Zamień ` na []; uważaj na N'...' dla Unicode.

Jak wartości są poprzedzane ucieczką

Wszystkie wartości są w pojedynczych cudzysłowach, a osadzone pojedyncze cudzysłowy są podwajane (O'Brien staje się 'O''Brien'). To sposób SQL-92 i działa w każdej głównej bazie. Konwerter nie rzutuje typów, wszystko emitowane jest jako literał tekstowy, więc niejawna konwersja bazy zamieni '42' na liczbę całkowitą, gdy kolumna jest INT.

Wskazówki do czystego importu

  • Najpierw utwórz tabelę. Konwerter emituje tylko instrukcje INSERT, nie CREATE TABLE. Zestaw to ze schematem zdefiniowanym ręcznie albo wygenerowanym z twojego ORM.
  • Dziel duże pliki. Wklejaj po 500-1000 wierszy naraz, jeśli twój klient SQL ma limit rozmiaru instrukcji.
  • Owiń w transakcję. Dla czegokolwiek więcej niż kilkaset wierszy obejmij wklejenie BEGIN; i COMMIT; (albo START TRANSACTION; / COMMIT;). Znacznie szybsze niż autozatwierdzanie każdej instrukcji.

Kiedy pominąć generowanie SQL

Jeśli twój plik ma więcej niż ~50 000 wierszy, natywne ładowarki masowe (COPY w Postgres, LOAD DATA INFILE w MySQL, bcp w SQL Server) są o rząd wielkości szybsze niż skryptowe INSERT-y. To narzędzie służy do szybkich importów, seedowania danych testowych i jednorazowych migracji.

Najczęściej zadawane pytania

Nie. Emituje tylko instrukcje INSERT. Zdefiniuj schemat samodzielnie przez CREATE TABLE wcześniej, w ten sposób zachowasz kontrolę nad typami kolumn, długościami i ograniczeniami, zamiast pozwalać konwerterowi zgadywać.

Z jedną zmianą: zamień cudzysłowy z grawisów wokół nazw tabel i kolumn na podwójne cudzysłowy. Wartości są w pojedynczych cudzysłowach i uruchomią się bez zmian w dowolnym dialekcie SQL-92.

Pojedyncze cudzysłowy wewnątrz wartości są podwajane (O''Brien), co jest standardową ucieczką SQL. Ukośniki wsteczne, znaki procentu i podkreślenia przechodzą dosłownie, stają się specjalne tylko we wzorcach LIKE.

Tak. CSV jest wysyłany na nasz serwer, aby można było wygenerować SQL. Nie jest przechowywany ani dodawany do linku strony.

Powiązane narzędzia