Generowanie plików JSON z bazy danych MySQL

Czy zdarzyło Ci się kiedyś, że chciałeś szybko wyeksportować dane z bazy MySQL do formatu JSON, ale nie do końca wiedziałeś jak to zrobić?
Spokojnie — nie jesteś sam. Wiele osób, które zaczynają przygodę z backendem, spotyka się z tym problemem. Dobra wiadomość jest taka, że generowanie plików JSON z bazy danych MySQL wcale nie jest trudne, a w tym artykule pokażę Ci dokładnie, jak to zrobić — krok po kroku.

Zacznijmy jednak od podstaw.

Co to jest JSON i dlaczego warto go używać?

JSON (czyli JavaScript Object Notation) to lekki format wymiany danych, który stał się absolutnym standardem w świecie web developmentu.
Dlaczego? Bo jest:

  • prosty w odczycie zarówno dla ludzi, jak i dla maszyn,
  • uniwersalny — można go wykorzystać w JavaScripcie, Pythonie, PHP, Javie czy C#,
  • świetny do komunikacji między backendem a frontendem,
  • dużo „lżejszy” niż XML.

JSON wygląda trochę jak obiekt w JavaScripcie, np.:

{
  "id": 1,
  "imie": "Jan",
  "nazwisko": "Kowalski",
  "email": "jan.kowalski@example.com"
}

Właśnie taki format danych chcemy uzyskać z naszej bazy MySQL.

Po co generować JSON z MySQL?

W praktyce generowanie plików JSON przydaje się w wielu sytuacjach:

  • Tworzenie API — np. gdy frontend (React, Vue, Angular) musi pobrać dane z bazy.
  • Eksport danych — np. do integracji z innymi systemami.
  • Archiwizacja danych — zapis danych w formacie przenośnym.
  • Analiza i raportowanie — łatwy import danych do narzędzi analitycznych.

Jeśli więc masz bazę danych z danymi klientów, produktami, zamówieniami itp., eksport do JSON to szybki sposób na ich przeniesienie lub udostępnienie.

Jak się za to zabrać?

Istnieje kilka sposobów, żeby wygenerować JSON z MySQL:

  1. Bezpośrednio w SQL (za pomocą funkcji JSON_OBJECT i JSON_ARRAYAGG).
  2. Za pomocą języka programowania – np. PHP, Python, Node.js.
  3. Z poziomu narzędzi administracyjnych, jak phpMyAdmin czy MySQL Workbench.

My skupimy się na metodzie programistycznej, bo daje największą kontrolę i elastyczność.

Metoda 1: Generowanie JSON z MySQL w PHP

Zacznijmy od klasycznego przykładu w PHP, bo to język najczęściej używany z MySQL.

Krok 1: Połączenie z bazą

Najpierw musimy połączyć się z naszą bazą danych.
Załóżmy, że mamy bazę sklep i tabelę produkty.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "sklep";

// Tworzymy połączenie
$conn = new mysqli($servername, $username, $password, $database);

// Sprawdzamy połączenie
if ($conn->connect_error) {
    die("Błąd połączenia: " . $conn->connect_error);
}
?>

Krok 2: Pobranie danych

Załóżmy, że tabela produkty wygląda tak:

idnazwacenakategoria
1Klawiatura99.99Elektronika
2Myszka59.99Elektronika

Pobieramy dane w PHP:

$sql = "SELECT * FROM produkty";
$result = $conn->query($sql);

$produkty = array();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $produkty[] = $row;
    }
}

Krok 3: Konwersja do JSON

Teraz wystarczy przekształcić dane do formatu JSON:

$jsonData = json_encode($produkty, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

// Wyświetlenie w przeglądarce
header('Content-Type: application/json; charset=utf-8');
echo $jsonData;

Wynik:

[
  {
    "id": "1",
    "nazwa": "Klawiatura",
    "cena": "99.99",
    "kategoria": "Elektronika"
  },
  {
    "id": "2",
    "nazwa": "Myszka",
    "cena": "59.99",
    "kategoria": "Elektronika"
  }
]

Krok 4: Zapis do pliku JSON

Jeśli chcesz zapisać wynik do pliku:

file_put_contents('produkty.json', $jsonData);

I gotowe — masz plik JSON z danymi z MySQL!

Metoda 2: Generowanie JSON z MySQL w Pythonie

PHP to jedno, ale jeśli wolisz Pythona — żaden problem.
Python ma świetne biblioteki do pracy z bazami danych i plikami.

Krok 1: Instalacja bibliotek

Najpierw zainstaluj mysql-connector-python:

pip install mysql-connector-python

Krok 2: Połączenie i pobranie danych

import mysql.connector
import json

# Połączenie z bazą danych
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="sklep"
)

cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM produkty")
rows = cursor.fetchall()

# Konwersja do JSON
json_data = json.dumps(rows, indent=4, ensure_ascii=False)

# Zapis do pliku
with open("produkty.json", "w", encoding="utf-8") as file:
    file.write(json_data)

print("Plik produkty.json został zapisany!")

Dodatkowe wskazówki i triki

1. Eksport tylko wybranych kolumn

Zamiast SELECT *, wybieraj tylko potrzebne dane:

SELECT id, nazwa, cena FROM produkty WHERE kategoria = 'Elektronika';

To zmniejszy rozmiar pliku i przyspieszy generowanie.

2. Dodanie metadanych do JSON-a

Czasem warto dodać dodatkowe informacje, np. datę wygenerowania.

W PHP:

$output = array(
  "timestamp" => date("Y-m-d H:i:s"),
  "count" => count($produkty),
  "data" => $produkty
);

echo json_encode($output, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

Wynik:

{
  "timestamp": "2025-10-08 12:34:56",
  "count": 2,
  "data": [ ... ]
}

3. Generowanie JSON bezpośrednio w MySQL

Od wersji MySQL 5.7 masz wbudowane funkcje JSON!

SELECT JSON_ARRAYAGG(
    JSON_OBJECT(
        'id', id,
        'nazwa', nazwa,
        'cena', cena
    )
) AS produkty_json
FROM produkty;

Ten prosty SQL zwróci gotowego JSON-a — możesz go od razu zapisać w pliku lub zwrócić w API.

4. Kompresja i zapis wielu plików

Jeśli Twoja baza jest ogromna, możesz generować wiele plików JSON po 1000 rekordów każdy.
W Pythonie możesz to łatwo zrobić np. pętlą:

batch_size = 1000
offset = 0

while True:
    cursor.execute(f"SELECT * FROM produkty LIMIT {batch_size} OFFSET {offset}")
    rows = cursor.fetchall()
    if not rows:
        break

    with open(f"produkty_{offset}.json", "w", encoding="utf-8") as file:
        json.dump(rows, file, indent=4, ensure_ascii=False)
    
    offset += batch_size

SEO: Najczęściej zadawane pytania

Jak wygenerować plik JSON z bazy MySQL?

Najprościej — za pomocą skryptu w PHP, Pythonie lub funkcji SQL JSON_OBJECT. Po pobraniu danych konwertujesz je do formatu JSON i zapisujesz do pliku.

Czy MySQL potrafi sam generować JSON?

Tak! Od wersji 5.7 w górę dostępne są funkcje JSON_OBJECT(), JSON_ARRAY() i JSON_ARRAYAGG().

Czy JSON można importować z powrotem do MySQL?

Oczywiście. Można to zrobić za pomocą funkcji LOAD DATA lub przetworzyć JSON w kodzie (np. w Pythonie lub PHP) i wstawić dane przez INSERT.

Czy JSON jest lepszy od CSV?

Zależy od zastosowania. JSON jest lepszy dla aplikacji i API, bo zachowuje strukturę danych. CSV z kolei świetnie nadaje się do arkuszy kalkulacyjnych i prostych zestawień.

Jak widzisz, generowanie plików JSON z bazy MySQL to żaden czarny magiczny trik.
Wystarczy kilka linijek kodu i masz w ręku potężne narzędzie do eksportu, integracji i analizy danych.


Pro tip na koniec:
Jeśli często generujesz JSON-y, napisz sobie prosty skrypt cronowy, który co godzinę lub codziennie eksportuje dane do pliku JSON i zapisuje w folderze backupów. To świetny sposób na automatyzację i kopie bezpieczeństwa.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl