Przejdź do treści
Bezpłatne narzędzie

Dzielenie i kompresowanie pliku SQL: SQL Splitter

Twój plik SQL jest zbyt duży, by zaimportować go w phpMyAdmin? SQL Splitter skompresuje go do .sql.gz lub podzieli między pełnymi instrukcjami na części mniejsze niż 1,9 MB, na przykład community-db.sql o rozmiarze 98 KB po kompresji do .sql.gz ma 20 KB. Za darmo, bez rejestracji i przesyłania danych: twój plik pozostaje w przeglądarce.

Autor: Justin Schuessler

Na własnym serwerze VPS możesz importować duże zrzuty przez konsolę, bez limitu przesyłania plików w phpMyAdmin.

Twój plik pozostaje w przeglądarce: nie jest nigdzie przesyłany ani zapisywany.

Przykładowy wynik

Jak SQL Splitter dzieli zrzut

Najpierw narzędzie sprawdza, czy skompresowany plik mieści się w Twoim limicie. Jeśli nie, dzieli go między pełnymi instrukcjami i dołącza nagłówek zrzutu do każdej części. Przykład to mały zrzut mysqldump z docelowym rozmiarem 40 KB, dzięki czemu powstaje kilka części; wynik dla Twojego pliku może być inny.

Przykład · Dane wejściowe: community-db.sql, 98 KB, 56 instrukcji, 2 tabel, wyzwalacz, procedura i widok

Plik SQL
98 KB
Jako .sql.gz
20 KB
4,9 razy mniejszy
Części poniżej 40 KB
3
Wykryto problemy z importem
9
DEFINER, CREATE DATABASE/USE, sortowania MySQL 8
Części w kolejności importu
community-db-part-001.sql     28 KB   17 Instrukcje  players, scorescommunity-db-part-002.sql     40 KB    3 Instrukcje  scorescommunity-db-part-003.sql     32 KB   18 Instrukcje  scores

Dlaczego to narzędzie?

SQL Splitter, którego części naprawdę da się zaimportować

Wiele narzędzi dzieli pliki według wierszy lub megabajtów, rozcinając przy tym wyzwalacze, procedury lub rekordy. To narzędzie odczytuje zrzut tak jak klient mysql.

Najpierw skompresuj, potem podziel

Zrzuty SQL zawierają dużo powtarzającego się tekstu i po kompresji do .sql.gz często stają się wielokrotnie mniejsze. phpMyAdmin importuje je bezpośrednio. Narzędzie najpierw oblicza rozmiar skompresowanego pliku. Jeśli mieści się on w twoim limicie, nie musisz dzielić pliku.

Podział tylko między pełnymi instrukcjami

Parser rozpoznaje ciągi znaków z sekwencjami ucieczki, komentarze z --, # i /* */, wiersze /*!40101 … */ z mysqldump oraz bloki DELIMITER. Średnik w ciągu znaków lub bloku DELIMITER nie rozdziela instrukcji.

Duże instrukcje INSERT są dzielone między wierszami

Jeśli instrukcja INSERT z wieloma wierszami jest większa niż jedna część, zostaje rozbita na kilka instrukcji INSERT z tym samym nagłówkiem, zawsze między dwoma rekordami. Jeśli pojedynczy rekord jest zbyt duży, narzędzie podaje jego numer i tabelę.

Każdą część można zaimportować osobno

Zestaw znaków, tryb SQL, strefa czasowa i wyłączenie sprawdzania kluczy obcych z nagłówka zrzutu znajdują się w każdej części, a na końcu wszystko jest przywracane. Zachowywane są też aktywne USE i DELIMITER.

Poprawki importu do zaznaczenia

DEFINER, CREATE DATABASE i USE, sortowania MySQL 8 oraz wiersze replikacji: narzędzie pokazuje, ile razy występują, i zmienia tylko to, co zaznaczysz. Poprawki działają również bez dzielenia.

Działa w przeglądarce, także z plikami o rozmiarze setek MB

Zrzuty często zawierają dane klientów. Plik jest przetwarzany strumieniowo w Web Workerze i nie opuszcza Twojego komputera; możesz śledzić postęp i przerwać operację, a karta się nie zawiesza.

Jak to działa

Jak zaimportować duży plik SQL w trzech krokach

Od zbyt dużego zrzutu do gotowej bazy danych — bez konta i bez przesyłania pliku.

Krok 1

Wczytaj plik SQL

Przeciągnij plik .sql, .sql.gz lub .zip do pola. Narzędzie odczyta go w przeglądarce, policzy instrukcje i tabele oraz wykryje typowe problemy z importem.

Krok 2

Skompresuj lub podziel

Wybierz limit przesyłania: phpMyAdmin 2 MB, 8 MB lub własną wartość. Jeśli plik .sql.gz mieści się w limicie, pobierzesz ten jeden plik. W przeciwnym razie narzędzie podzieli go na części mniejsze niż wybrany limit (przy 2 MB maksymalnie 1,9 MB), które pobierzesz osobno lub jako ZIP, opcjonalnie z poprawkami importu.

Krok 3

Importuj w phpMyAdmin

Wybierz bazę danych po lewej, otwórz kartę Import, wybierz plik i kliknij OK. Jeśli części jest kilka, importuj je po kolei, zaczynając od części 1. Możesz też skopiować część i wkleić ją na karcie SQL.

Komunikaty o błędach

Dlaczego import w phpMyAdmin się nie udaje i co zrobić

Najczęstsze komunikaty podczas importu pliku SQL i odpowiednie działanie w narzędziu.

Import zatrzymuje się na „Proszę czekać, trwa przetwarzanie pliku.”

Przyczyna: Plik przekracza limit przesyłania phpMyAdmin (u nas 2 MB, wyświetlane jako „Maksymalny rozmiar: 2.048 KiB”). phpMyAdmin 5.2 często nie wyświetla wtedy błędu — wskaźnik ładowania po prostu kręci się dalej. W zależności od ustawień serwera może się zamiast tego pojawić komunikat „Nie otrzymano żadnych danych do importu”.

Rozwiązanie: Prześlij jako .sql.gz. Jeśli plik nadal jest za duży, podziel go i importuj części po kolei.

„Wygląda na to, że połączenie z serwerem zostało utracone” na karcie SQL

Przyczyna: Wklejony tekst jest zbyt duży. Przeglądarka wysyła go w postaci zakodowanej: spacje i znaki specjalne mogą zajmować trzy razy więcej miejsca, a znaki nowego wiersza — sześć razy więcej. Dlatego tekst o rozmiarze 1,9 MB może szybko przekroczyć 2 MB.

Rozwiązanie: Wybierz w narzędziu „Wklej do konsoli SQL” — wtedy części zmieszczą się w limicie także po zakodowaniu.

#1227 Access denied; you need (at least one of) the SUPER privilege(s)

Przyczyna: Widoki, wyzwalacze lub procedury zawierają DEFINER wskazujący użytkownika starego serwera. W MariaDB wymagane uprawnienie nazywa się SET USER, a dla SQL_LOG_BIN ze zrzutów MySQL — BINLOG ADMIN.

Rozwiązanie: Zaznacz poprawkę „Usuń DEFINER”, a w przypadku zrzutów MySQL także „Usuń wiersze replikacji”.

#1273 Unknown collation: 'utf8mb4_0900_ai_ci'

Przyczyna: Zrzut pochodzi z MySQL 8. MariaDB nie obsługuje tego porządkowania znaków, nawet w wersji 11.6.

Rozwiązanie: Zaznacz poprawkę „Zastąp sortowania MySQL 8”.

#1193 Unknown system variable 'GTID_PURGED'

Przyczyna: Zrzut pochodzi z serwera MySQL z replikacją GTID. Ten wiersz występuje tylko w MySQL.

Rozwiązanie: Zaznacz poprawkę „Usuń wiersze replikacji”.

#1044 Access denied for user … to database …

Przyczyna: Zrzut tworzy własną bazę danych za pomocą CREATE DATABASE lub przełącza się za pomocą USE na bazę, do której Twój użytkownik nie ma dostępu.

Rozwiązanie: Zaznacz poprawkę „Usuń CREATE DATABASE i USE” i najpierw wybierz po lewej właściwą bazę danych.

#1452 Cannot add or update a child row: a foreign key constraint fails

Przyczyna: Część wstawia dane, których powiązane wiersze pojawiają się dopiero w późniejszej części.

Rozwiązanie: Narzędzie wyłącza sprawdzanie kluczy obcych w każdej części. Mimo to importuj części w odpowiedniej kolejności.

#1050 Table already exists lub #1062 Duplicate entry

Przyczyna: Część została zaimportowana dwukrotnie, często po przerwaniu importu.

Rozwiązanie: Nie zaczynaj od początku: wznów od części, przy której import został przerwany. Jeśli masz wątpliwości, wyczyść bazę danych i zacznij od nowa.

Właściwy sposób

Kompresować, dzielić czy użyć innego narzędzia?

Dzielenie nie zawsze jest najlepszym rozwiązaniem. Tak podejmiesz decyzję w minutę.

Ścieżka 1

Skompresuj (.sql.gz)

Najszybszy sposób, jeśli skompresowany plik mieści się w limicie: jeden plik, jeden import, bez zmian.

Ścieżka 2

Podziel za pomocą SQL Splittera

Gdy nawet plik .sql.gz jest za duży i masz do dyspozycji tylko phpMyAdmin. Wymaga kilku przesłań, ale nie dodatkowego oprogramowania.

Ścieżka 3

HeidiSQL lub inny klient bazy danych

Do bardzo dużych zrzutów lub pojedynczych rekordów przekraczających limit. Klient łączy się bezpośrednio z bazą danych, więc nie obowiązuje limit przesyłania. W systemie Windows: Plik, Uruchom plik SQL.

Ścieżka 4

Klient mysql w konsoli

Jeśli masz VPS lub dostęp przez SSH, polecenie mysql -u benutzer -p datenbank < dump.sql zaimportuje zrzut bez limitu przesyłania plików w phpMyAdmin. W przypadku pliku .gz użyj zcat.

Odkryj więcej

Więcej narzędzi

FAQ

Często zadawane pytania

Krótkie odpowiedzi o importowaniu przez phpMyAdmin, zrzutach SQL i narzędziu SQL Splitter.

Otrzymasz plik .sql.gz, który phpMyAdmin zaimportuje bezpośrednio, albo kilka plików .sql, z których każdy mieści się w Twoim limicie. Pliki są dostępne osobno i w archiwum ZIP, a na życzenie także jako .sql.gz i tekst do skopiowania. Plik community-db.sql o rozmiarze 98 KB po kompresji do .sql.gz ma 20 KB, a po podziale przy docelowym rozmiarze 40 KB powstaje 3 części. Każda zawiera nagłówek zrzutu; części są ułożone w kolejności importu. Narzędzie pokazuje też rozmiar, liczbę instrukcji i tabele dla każdej części.

phpMyAdmin odbiera pliki przez PHP, a PHP ogranicza rozmiar przesyłanych plików (upload_max_filesize i post_max_size). Na naszych serwerach baz danych limit wynosi 2 MB. phpMyAdmin pokazuje go w sekcji importu jako „Maksymalny rozmiar: 2.048 KiB”. Tekst wklejany na kartę SQL również podlega temu limitowi. Dlatego narzędzie ma tryb „Wklej do konsoli SQL”: uwzględnia rozmiar danych faktycznie wysyłanych przez przeglądarkę i odpowiednio zmniejsza części.

Często tak. Limit dotyczy przesyłanego pliku, czyli pliku skompresowanego, a zrzuty SQL zawierają dużo powtarzającego się tekstu. phpMyAdmin sam rozpakowuje plik .sql.gz podczas importu. SQL Splitter najpierw oblicza rozmiar pliku .sql.gz, pokazuje ci, ile razy jest on mniejszy, i zaleca podział tylko wtedy, gdy skompresowany plik nadal przekracza twój limit.

Wczytaj plik .sql, .sql.gz lub .zip do SQL Splitter, na przykład eksport z mysqldump, mariadb-dump, phpMyAdmin, HeidiSQL lub Adminer. Podział następuje tylko między pełnymi instrukcjami: narzędzie rozpoznaje ciągi znaków z sekwencjami ucieczki, komentarze, wiersze /*!…*/ i bloki DELIMITER dla wyzwalaczy i procedur. Średnik wewnątrz nich nie rozdziela instrukcji. Jeśli instrukcja INSERT z wieloma wierszami jest większa niż jedna część, zostanie podzielona między rekordami na kilka instrukcji INSERT z tym samym początkiem. Jeśli pojedynczy rekord przekracza rozmiar docelowy — zwykle jest to obraz w kolumnie BLOB — narzędzie poda numer instrukcji, wiersz i tabelę. Taką część zaimportuj przez HeidiSQL lub klienta mysql albo spróbuj przesłać ją jako .sql.gz.

Importuj części w kolejności numerów, zaczynając od części 1, wszystkie do tej samej bazy danych. Część 1 zwykle zawiera instrukcje CREATE TABLE, a kolejne części wypełniają tabele. Jeśli zrzut zawiera klucze obce, każda część wyłącza ich sprawdzanie na początku i ponownie włącza na końcu. Jeśli import części zostanie przerwany, napraw błąd i kontynuuj od tej samej części. Nie importuj wcześniejszych części ponownie, bo pojawi się błąd „Table already exists” lub „Duplicate entry”. Jeśli nie pamiętasz, co zostało już zaimportowane, wyczyść bazę danych (w phpMyAdmin na karcie Struktura zaznacz i usuń wszystkie tabele) i zacznij ponownie od części 1.

Widoki, wyzwalacze, procedury i zdarzenia zapisują użytkownika, z którego uprawnieniami działają (DEFINER). Jeśli wskazują użytkownika starego serwera, np. root, Twój użytkownik bazy danych nie może ich utworzyć. Zaznacz w narzędziu „Usuń DEFINER”, a serwer utworzy je z Twoim użytkownikiem. MariaDB nazywa brakujące uprawnienie SET USER. Jeśli zrzut pochodzi z MySQL, import może się też nie udać przez wiersze SQL_LOG_BIN (uprawnienie BINLOG ADMIN) i GTID_PURGED — do tego służy opcja „Usuń wiersze replikacji”.

utf8mb4_0900_ai_ci to domyślne porównywanie znaków w MySQL 8. MariaDB go nie obsługuje, nawet w wersji 11.6, i przerywa wykonywanie CREATE TABLE z błędem #1273. Poprawka „Zastąp sortowania MySQL 8” zamienia je i pozostałe warianty 0900 na utf8mb4_unicode_ci, a warianty rozróżniające wielkość liter na utf8mb4_bin. Instrukcje INSERT, a więc i twoje dane, pozostają bez zmian.

Nie. Zrzut często zawiera dane klientów i dane dostępowe, dlatego narzędzie odczytuje plik tylko w Twojej przeglądarce, za pomocą Web Workera. Nie przesyła ani nie zapisuje pliku i nie wymaga konta. W karcie sieciowej narzędzi deweloperskich zobaczysz, że podczas kompresowania i dzielenia nie jest wysyłane żadne żądanie z Twoim plikiem.

Masz dodatkowe pytania?

Kontakt z pomocą techniczną
Większe bazy danych?

Twoja baza danych bez limitu przesyłania na własnym serwerze VPS

Z serwerem VPS od ZAP-Hosting masz dostęp root, importujesz duże zrzuty przez konsolę i uruchamiasz MySQL, MariaDB lub PostgreSQL tak, jak chcesz.

4,4/5 Trustpilot32.000+ Aktywne serweryOd 2010 roku

Bez konfiguracji. Bez ryzyka. Online w kilka sekund.

Elastyczny okres obowiązywaniaAnuluj w dowolnym momencieOnline w 60 sekund

Szukasz więcej narzędzi? Zobacz wszystkie narzędzia dla programistów