{"id":124,"date":"2026-07-17T13:47:00","date_gmt":"2026-07-17T11:47:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=124"},"modified":"2026-10-24T00:57:44","modified_gmt":"2026-10-23T22:57:44","slug":"ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/","title":{"rendered":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP"},"content":{"rendered":"<p>Z du\u017cego zrzutu MySQL czasem potrzebna jest tylko konkretna tabela. Wyodr\u0119bnienie odpowiedniego tekstu nie wymaga wczytania ca\u0142ego pliku do edytora ani pami\u0119ci PHP. Wa\u017cne jest jednak rozr\u00f3\u017cnienie celu: fragment do analizy albo kopia bazy, kt\u00f3r\u0105 rzeczywi\u015bcie da si\u0119 odtworzy\u0107.<\/p>\n<p>Filtr wierszowy nie jest parserem SQL. Poni\u017cszy przyk\u0142ad PHP kopiuje wybrane sekcje tabel rozpoznawane po standardowych komentarzach. Wynik pozostaje <strong>fragmentem tekstu do sprawdzenia<\/strong>. Przy odtwarzaniu danych lepszym wyborem jest nowy eksport wybranych obiekt\u00f3w albo zweryfikowana procedura przywracania.<\/p>\n<figure class=\"lw-diagram wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-122-sql-20261024-pl.png\" width=\"1120\" height=\"580\" alt=\"Fragment SQL: osobny wyb\u00f3r bazy i tabel\" loading=\"lazy\" \/><\/figure>\n<h2>Dlaczego jeden prze\u0142\u0105cznik nie wystarcza<\/h2>\n<p>Baza i tabela to dwa oddzielne stany. Zmiana bazy ko\u0144czy bie\u017c\u0105cy wyb\u00f3r. Ka\u017cdy nowy znacznik tabeli wymaga ponownej decyzji o kopiowaniu. Sprawdzanie kolejnych tabel wy\u0142\u0105cznie przy wy\u0142\u0105czonym prze\u0142\u0105czniku powodowa\u0142oby kopiowanie tak\u017ce innych tabel po pierwszym trafieniu.<\/p>\n<p>Samo <code>fgets()<\/code> nie gwarantuje minimalnego zu\u017cycia pami\u0119ci. Bez ograniczenia d\u0142ugo\u015bci odczytywany jest ca\u0142y wiersz, a rozszerzony <code>INSERT<\/code> mo\u017ce by\u0107 bardzo d\u0142ugi. Przyk\u0142ad czyta najwy\u017cej 65 536 bajt\u00f3w na krok i rozpoznaje znaczniki wy\u0142\u0105cznie na pocz\u0105tku wiersza. D\u0142ugie wiersze danych s\u0105 kopiowane porcjami.<\/p>\n<h2>Wymagany format zrzutu<\/h2>\n<ul>\n<li>Nieskompresowany plik tekstowy w typowym formacie komentarzy <code>mysqldump<\/code>, ze znacznikami baz, na przyk\u0142ad z eksportu przez <code>--databases<\/code> lub <code>--all-databases<\/code>.<\/li>\n<li>Obecne s\u0105 znaczniki <code>-- Current Database:<\/code> oraz odpowiednie sekcje <code>-- Table structure for table<\/code> i\/lub <code>-- Dumping data for table<\/code>. Zrzuty z <code>--skip-comments<\/code> nie s\u0105 obs\u0142ugiwane t\u0105 metod\u0105.<\/li>\n<li>Dok\u0142adne nazwy bazy i tabel zamiast jednego niejednoznacznego prefiksu. Identyfikatory z osadzonym znakiem backtick i inne formaty generator\u00f3w wykraczaj\u0105 poza zakres przyk\u0142adu.<\/li>\n<li>PHP 8 CLI i lokalny system plik\u00f3w obs\u0142uguj\u0105cy dowi\u0105zania twarde w obr\u0119bie jednego katalogu. Plik \u017ar\u00f3d\u0142owy, cz\u0119\u015bciowy i wynikowy znajduj\u0105 si\u0119 poza publicznym katalogiem witryny.<\/li>\n<\/ul>\n<p>Skompresowany zrzut wymaga wcze\u015bniejszego rozpakowania do chronionego katalogu z odpowiedni\u0105 ilo\u015bci\u0105 miejsca. Obejrzenie pocz\u0105tku pliku pomaga rozpozna\u0107 format, lecz nie potwierdza ca\u0142ej zawarto\u015bci, wszystkich p\u00f3\u017aniejszych tabel ani d\u0142ugo\u015bci wszystkich wierszy.<\/p>\n<h2>Przyk\u0142ad PHP: sekcje tabel o podanych nazwach<\/h2>\n<p>Wywo\u0142anie <code>php extract.php dump.sql excerpt.txt shop orders customers<\/code> wybiera tabele <code>orders<\/code> i <code>customers<\/code> z bazy <code>shop<\/code>. Plik wynikowy i odpowiadaj\u0105cy mu plik <code>.part<\/code> nie mog\u0105 wcze\u015bniej istnie\u0107.<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ PHP 8 CLI. Produces a text excerpt, not a validated restore file.\numask(0077);\nif ($argc &lt; 5) {\n    fwrite(STDERR, &quot;Usage: php extract.php input.sql excerpt.txt database table [table...]\\n&quot;);\n    exit(2);\n}\n[, $input, $output, $database] = $argv;\n$tables = array_fill_keys(array_slice($argv, 4), true);\n$part = $output . &#x27;.part&#x27;;\n$in = $out = false;\n$created = false;\n\ntry {\n    $in = @fopen($input, &#x27;rb&#x27;);\n    if ($in === false) throw new RuntimeException(&#x27;Cannot open input&#x27;);\n    $out = @fopen($part, &#x27;xb&#x27;);\n    if ($out === false) throw new RuntimeException(&#x27;Cannot create new partial output&#x27;);\n    $created = true;\n    $currentDatabase = null;\n    $copy = false;\n    $lineStart = true;\n    $seen = [];\n\n    while (($chunk = fgets($in, 65537)) !== false) {\n        if ($lineStart) {\n            if (preg_match(&#x27;\/^-- Current Database: `([^`]+)`\\r?\\n?$\/D&#x27;, $chunk, $m)) {\n                $currentDatabase = $m[1];\n                $copy = false;\n            } elseif (preg_match(&#x27;\/^-- (?:Table structure|Dumping data) for table `([^`]+)`\\r?\\n?$\/D&#x27;, $chunk, $m)) {\n                $copy = $currentDatabase === $database &amp;&amp; isset($tables[$m[1]]);\n                if ($copy) $seen[$m[1]] = true;\n            } elseif (str_starts_with($chunk, &#x27;-- &#x27;)) {\n                $copy = false;\n            }\n        }\n        if ($copy) {\n            $offset = 0;\n            $length = strlen($chunk);\n            while ($offset &lt; $length) {\n                $n = fwrite($out, substr($chunk, $offset));\n                if ($n === false || $n === 0) throw new RuntimeException(&#x27;Write failed&#x27;);\n                $offset += $n;\n            }\n        }\n        $lineStart = str_ends_with($chunk, &quot;\\n&quot;);\n    }\n    if (!feof($in)) throw new RuntimeException(&#x27;Read failed&#x27;);\n    if (array_diff_key($tables, $seen)) {\n        throw new RuntimeException(&#x27;Requested table marker missing; format or names differ&#x27;);\n    }\n    if (!fflush($out)) throw new RuntimeException(&#x27;Flush failed&#x27;);\n    if (!fclose($out)) throw new RuntimeException(&#x27;Close failed&#x27;);\n    $out = false;\n    \/\/ Same-directory hard link: fails if the final name already exists.\n    if (!@link($part, $output)) throw new RuntimeException(&#x27;Cannot publish new output&#x27;);\n    if (!unlink($part)) throw new RuntimeException(&#x27;Output exists, partial link cleanup failed&#x27;);\n    $created = false;\n    fwrite(STDERR, &quot;Text excerpt written. Separate restore validation required.\\n&quot;);\n} catch (Throwable $e) {\n    if (is_resource($out)) fclose($out);\n    if ($created &amp;&amp; is_file($part)) unlink($part);\n    fwrite(STDERR, $e-&gt;getMessage() . &quot;\\n&quot;);\n    exit(1);\n} finally {\n    if (is_resource($in)) fclose($in);\n}\n<\/code><\/pre>\n<p>Ko\u0144cowy wynik pojawia si\u0119 dopiero po odczytaniu wej\u015bcia, poprawnym zapisie oraz odnalezieniu przynajmniej jednego znacznika ka\u017cdej wskazanej tabeli. Znacznik potwierdza wyb\u00f3r sekcji, a nie kompletno\u015b\u0107 obiektu SQL. Istniej\u0105cy wynik nie jest nadpisywany. B\u0142\u0119dy ko\u0144cz\u0105 program kodem r\u00f3\u017cnym od zera; cz\u0119\u015bciowy fragment nie jest zg\u0142aszany jako gotowy rezultat.<\/p>\n<h2>Od fragmentu tekstu do odtworzenia<\/h2>\n<p>Ustawienia sesji, takie jak zestaw znak\u00f3w i tryb SQL, zale\u017cno\u015bci kluczy obcych, triggery, widoki i procedury mog\u0105 znajdowa\u0107 si\u0119 poza kopiowan\u0105 sekcj\u0105. Nietypowo zapisane ci\u0105gi SQL mog\u0105 te\u017c zawiera\u0107 tekst podobny do komentarzy. Przyk\u0142ad nie interpretuje tych struktur i nie jest uniwersalnym filtrem importu.<\/p>\n<p>Je\u017celi dost\u0119pny jest serwer \u017ar\u00f3d\u0142owy, <code>mysqldump<\/code> przyjmuje nazw\u0119 bazy, a po niej konkretne nazwy tabel. Dla InnoDB opcja <code>--single-transaction<\/code> mo\u017ce zapewni\u0107 sp\u00f3jny zrzut; inne silniki i r\u00f3wnoczesne zmiany struktury wymagaj\u0105 odpowiedniej strategii. Gdy pozosta\u0142 wy\u0142\u0105cznie zrzut, odtworzenie w odizolowanym \u015brodowisku i nast\u0119pnie eksport wybranych obiekt\u00f3w daje lepsz\u0105 kontrol\u0119. Przed importem potrzebna jest ocena wersji docelowej, miejsca, zale\u017cno\u015bci i uprawnie\u0144.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Jak szybko dzia\u0142a filtr?<\/h3>\n<p>Odczytywany jest ca\u0142y plik wej\u015bciowy. Czas i pami\u0119\u0107 zale\u017c\u0105 mi\u0119dzy innymi od no\u015bnika, ilo\u015bci zapisywanych danych i PHP. Uniwersalna obietnica przetwarzania wielu gigabajt\u00f3w w kilka sekund nie jest wiarygodna. Ograniczony bufor zapobiega jedynie przechowywaniu ca\u0142ego bardzo d\u0142ugiego wiersza w pami\u0119ci PHP.<\/p>\n<h3>Co oznacza brak trafienia?<\/h3>\n<p>Nazwa mo\u017ce nie istnie\u0107, mie\u0107 inn\u0105 pisowni\u0119 albo wyst\u0119powa\u0107 bez oczekiwanych komentarzy. Skrypt zg\u0142asza wtedy b\u0142\u0105d. Pusty fragment nie jest przedstawiany jako dow\u00f3d pustej tabeli.<\/p>\n<h3>Czy sukces oznacza mo\u017cliwo\u015b\u0107 odtworzenia wszystkich wybranych obiekt\u00f3w?<\/h3>\n<p>Nie. Pr\u00f3ba odtworzenia ze sprawdzeniem schematu, wierszy i zale\u017cno\u015bci jest osobnym etapem. Oryginalny zrzut pozostaje niezmieniony.<\/p>\n<\/div>\n<h2>\u0179r\u00f3d\u0142a i data weryfikacji<\/h2>\n<p>2026-10-24<\/p>\n<ul>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/function.fgets.php\">PHP: fgets<\/a><\/li>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/function.fwrite.php\">PHP: fwrite<\/a><\/li>\n<li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.4\/en\/mysqldump.html\">MySQL 8.4: mysqldump<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Z du\u017cego zrzutu MySQL czasem potrzebna jest tylko konkretna tabela. Wyodr\u0119bnienie odpowiedniego tekstu nie wymaga wczytania ca\u0142ego pliku do edytora ani pami\u0119ci PHP. Wa\u017cne jest jednak rozr\u00f3\u017cnienie celu: fragment do analizy albo kopia bazy, kt\u00f3r\u0105 rzeczywi\u015bcie da si\u0119 odtworzy\u0107. Filtr wierszowy nie jest parserem SQL. Poni\u017cszy przyk\u0142ad PHP kopiuje wybrane sekcje tabel rozpoznawane po standardowych [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":13649,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[92061,92445,92262,92280,92421],"class_list":["post-124","post","type-post","status-publish","format-standard","hentry","category-it-networks-pl","tag-automation-pl","tag-backup-pl","tag-mysql-pl","tag-php-pl","tag-server-administration-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP | Lukas Wojcik<\/title>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Z du\u017cego zrzutu MySQL czasem potrzebna jest tylko konkretna tabela. Wyodr\u0119bnienie odpowiedniego tekstu nie wymaga wczytania ca\u0142ego pliku do edytora ani pami\u0119ci PHP. Wa\u017cne jest jednak rozr\u00f3\u017cnienie celu: fragment do analizy albo kopia bazy, kt\u00f3r\u0105 rzeczywi\u015bcie da si\u0119 odtworzy\u0107. Filtr wierszowy nie jest parserem SQL. Poni\u017cszy przyk\u0142ad PHP kopiuje wybrane sekcje tabel rozpoznawane po standardowych [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-17T11:47:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T22:57:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP\",\"datePublished\":\"2026-07-17T11:47:00+00:00\",\"dateModified\":\"2026-10-23T22:57:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/\"},\"wordCount\":675,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png\",\"keywords\":[\"Automation\",\"Backup\",\"MySQL\",\"PHP\",\"Server Administration\"],\"articleSection\":[\"IT &amp; Networks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/\",\"name\":\"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png\",\"datePublished\":\"2026-07-17T11:47:00+00:00\",\"dateModified\":\"2026-10-23T22:57:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png\",\"width\":1200,\"height\":630,\"caption\":\"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP | Lukas Wojcik","robots":{"index":"noindex","follow":"follow"},"og_locale":"en_US","og_type":"article","og_title":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP | Lukas Wojcik","og_description":"Z du\u017cego zrzutu MySQL czasem potrzebna jest tylko konkretna tabela. Wyodr\u0119bnienie odpowiedniego tekstu nie wymaga wczytania ca\u0142ego pliku do edytora ani pami\u0119ci PHP. Wa\u017cne jest jednak rozr\u00f3\u017cnienie celu: fragment do analizy albo kopia bazy, kt\u00f3r\u0105 rzeczywi\u015bcie da si\u0119 odtworzy\u0107. Filtr wierszowy nie jest parserem SQL. Poni\u017cszy przyk\u0142ad PHP kopiuje wybrane sekcje tabel rozpoznawane po standardowych [&hellip;]","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-07-17T11:47:00+00:00","article_modified_time":"2026-10-23T22:57:44+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP","datePublished":"2026-07-17T11:47:00+00:00","dateModified":"2026-10-23T22:57:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/"},"wordCount":675,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png","keywords":["Automation","Backup","MySQL","PHP","Server Administration"],"articleSection":["IT &amp; Networks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/","name":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png","datePublished":"2026-07-17T11:47:00+00:00","dateModified":"2026-10-23T22:57:44+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-124-ekstrakcja-konkretnych-fragmentow-z--g.png","width":1200,"height":630,"caption":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/ekstrakcja-konkretnych-fragmentow-z-ogromnych-zrzutow-sql-przy-uzyciu-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ekstrakcja konkretnych fragment\u00f3w z ogromnych zrzut\u00f3w SQL przy u\u017cyciu PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"predecessor-version":[{"id":22887,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/124\/revisions\/22887"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13649"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}