Jak zaimportować plik CSV do bazy danych MySQL?

Importowanie danych z pliku CSV do bazy danych MySQL brzmi skomplikowanie? Spokojnie, to naprawdę nie jest takie trudne! W tym artykule pokażę Ci krok po kroku, jak to zrobić, nawet jeśli dopiero zaczynasz swoją przygodę z bazami danych. Omówimy różne metody, więc znajdziesz coś dla siebie, niezależnie od poziomu zaawansowania. Przygotuj kubek kawy i zaczynajmy!

Czym jest plik CSV i dlaczego jest taki popularny?

CSV (Comma-Separated Values) to prosty format plików tekstowych, który przechowuje dane w formie tabelarycznej. Jest lekki, łatwy do odczytania i obsługiwany przez większość narzędzi, takich jak Excel, Google Sheets czy bazy danych. W pliku CSV dane są oddzielone przecinkami, średnikami lub innymi separatorami, co czyni go idealnym do wymiany informacji między różnymi systemami.

Przykład prostego pliku CSV:

id,name,email
1,Jan Kowalski,jan.kowalski@example.com
2,Agnieszka Nowak,agnieszka.nowak@example.com

Krok 1: Przygotowanie środowiska

1. Zainstaluj MySQL

Najpierw upewnij się, że masz zainstalowany serwer MySQL. Jeśli jeszcze go nie masz, możesz pobrać go z oficjalnej strony MySQL.

2. Stwórz bazę danych i tabelę

Potrzebujemy tabeli, do której zaimportujemy dane z pliku CSV. Załóżmy, że chcesz stworzyć tabelę do przechowywania danych użytkowników.

Otwórz terminal MySQL lub dowolne narzędzie graficzne (np. phpMyAdmin, MySQL Workbench) i stwórz tabelę:

CREATE DATABASE csv_import_db;

USE csv_import_db;

CREATE TABLE users (
    id INT NOT NULL,
    name VARCHAR(100),
    email VARCHAR(100),
    PRIMARY KEY (id)
);

3. Przygotuj plik CSV

Twój plik CSV musi być dobrze sformatowany. Zapisz go jako users.csv i upewnij się, że kolumny w pliku odpowiadają strukturze tabeli.

Krok 2: Import pliku CSV przy użyciu wiersza poleceń

Jeśli lubisz pracować z terminalem, MySQL oferuje wbudowaną funkcję do importowania danych z plików.

Polecenie LOAD DATA INFILE

LOAD DATA INFILE '/ścieżka/do/pliku/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

Co oznaczają te parametry?

  • /ścieżka/do/pliku/users.csv – podaj pełną ścieżkę do pliku CSV.
  • FIELDS TERMINATED BY ',' – definiuje separator pól (tu: przecinek).
  • LINES TERMINATED BY '\n' – określa, że każdy wiersz kończy się nową linią.
  • IGNORE 1 ROWS – pomija pierwszy wiersz pliku (nagłówki kolumn).

Uwaga: Jeśli pojawi się błąd „The MySQL server is running with the –secure-file-priv option,” musisz zapisać plik CSV w katalogu wskazanym w konfiguracji MySQL.

Krok 3: Import z użyciem narzędzi graficznych

Jeśli wolisz bardziej „klikalne” podejście, możesz skorzystać z MySQL Workbench lub phpMyAdmin.

MySQL Workbench

  1. Otwórz MySQL Workbench i połącz się z serwerem.
  2. Wybierz bazę danych, do której chcesz zaimportować plik.
  3. Kliknij prawym przyciskiem myszy na tabelę users, a następnie wybierz opcję Table Data Import Wizard.
  4. Wskaż plik CSV i postępuj zgodnie z instrukcjami kreatora.

phpMyAdmin

  1. Zaloguj się do phpMyAdmin.
  2. Wybierz swoją bazę danych.
  3. Przejdź do zakładki Import.
  4. Wybierz plik CSV, ustaw separator jako przecinek (lub inny, jeśli Twój plik korzysta z innego znaku).
  5. Kliknij Go i gotowe!

Krok 4: Import za pomocą języka Python

Jeśli jesteś fanem programowania, możesz użyć Pythona i biblioteki pymysql lub mysql-connector-python, aby zaimportować dane.

Przykładowy kod w Pythonie

Najpierw zainstaluj bibliotekę:

pip install pymysql

Następnie napisz skrypt:

import pymysql
import csv

# Połącz się z bazą danych
connection = pymysql.connect(
    host='localhost',
    user='twoja_nazwa_uzytkownika',
    password='twoje_haslo',
    database='csv_import_db'
)

cursor = connection.cursor()

# Otwórz plik CSV
with open('users.csv', 'r') as file:
    csv_data = csv.reader(file)
    next(csv_data)  # Pomija nagłówki
    
    for row in csv_data:
        cursor.execute(
            "INSERT INTO users (id, name, email) VALUES (%s, %s, %s)", row
        )

# Zatwierdź zmiany i zamknij połączenie
connection.commit()
cursor.close()
connection.close()

print("Import zakończony sukcesem!")

Najczęstsze problemy i rozwiązania

  1. Problem z kodowaniem znaków Jeśli polskie znaki (np. ą, ś, ż) wyświetlają się błędnie, sprawdź kodowanie pliku CSV. Ustaw kodowanie na UTF-8.
  2. Błąd: „Access denied for user” Upewnij się, że użytkownik MySQL ma odpowiednie uprawnienia do importowania danych.
  3. Niepoprawny format danych Jeśli plik CSV zawiera dane niezgodne z typami kolumn w tabeli, import się nie uda. Zawsze sprawdzaj dane przed rozpoczęciem importu!

Import pliku CSV do bazy danych MySQL nie jest tak trudny, jak się wydaje, prawda? Niezależnie od tego, czy wolisz terminal, narzędzia graficzne, czy język Python, masz wiele możliwości do wyboru. Ważne jest, aby upewnić się, że dane są dobrze przygotowane, a plik CSV odpowiada strukturze tabeli.

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