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:
- Bezpośrednio w SQL (za pomocą funkcji
JSON_OBJECTiJSON_ARRAYAGG). - Za pomocą języka programowania – np. PHP, Python, Node.js.
- 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:
| id | nazwa | cena | kategoria |
|---|---|---|---|
| 1 | Klawiatura | 99.99 | Elektronika |
| 2 | Myszka | 59.99 | Elektronika |
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.