CodeGym /Kurslar /SQL SELF /CSV-dən məlumatların yüklənməsi üçün cədvəllərin hazırlan...

CSV-dən məlumatların yüklənməsi üçün cədvəllərin hazırlanması

SQL SELF
Səviyyə , Dərs
Mövcuddur

Gəlin nəhayət CSV fayllarından kütləvi məlumat yükləmək üçün cədvəllərin hazırlanması ilə məşğul olaq. Əgər düşünürsən: "Axı niyə cədvəli hazırlamaq lazımdır? Burda nə çətinlik var ki?", deməli real dünya haqqında hələ çox şey öyrənməlisən. Heç bir fayl "ideal" olmur. Hər zaman bir az problem tapılır — istər təkrarlanan sətirlər, artıq boşluqlar, data type səhvləri, ya da sadəcə strukturun uyğun gəlməməsi.

Gəlin baxaq, bazanı necə düzgün hazırlamaq lazımdır ki, CSV faylı problemsiz yüklənsin.

CSV faylını yükləməzdən əvvəl, məlumatların bazada necə saxlanacağını müəyyən et. Yəni əvvəlcə uyğun struktura malik cədvəl yaratmaq lazımdır.

Nümunə: tələbələr haqqında məlumatların yüklənməsi

Tutaq ki, bizdə tələbələr haqqında məlumat olan students.csv adlı CSV faylı var. Onun tərkibi belədir:

id,name,age,email,major
1,Alex,20,alex@example.com,Computer Science
2,Maria,21,maria@example.com,Mathematics
3,Otto,19,otto@example.com,Physics

Bunun əsasında cədvəl yaradaq:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,       -- Tələbənin unikal identifikatoru
    name VARCHAR(100) NOT NULL,  -- Tələbənin adı (100 simvola qədər string)
    age INT CHECK (age > 0),     -- Tələbənin yaşı (0-dan böyük olmalıdır)
    email VARCHAR(100) UNIQUE,   -- Unikal email
    major VARCHAR(100)           -- Əsas ixtisas
);
  • id SERIAL PRIMARY KEY: Sətirləri unikal identifikasiya etmək üçün əsas açar əlavə etdik. Əgər CSV faylında artıq unikal identifikatorlar varsa, fayldakı id sütunundan istifadə et.
  • name VARCHAR(100) NOT NULL: Tələbənin adı mütləq göstərilməlidir və uzunluğu 100 simvoldan çox olmamalıdır.
  • age INT CHECK (age > 0): Yaş rəqəm olmalıdır və həmişə 0-dan böyük olmasına nəzarət edirik.
  • email VARCHAR(100) UNIQUE: Email unikal olmalıdır ki, təkrarlanan qeydlər olmasın.
  • major VARCHAR(100): Tələbənin əsas ixtisasını göstərir. Burada məhdudiyyət yoxdur.

Cədvəllərin strukturu yaxşı düşünülmüş olmalıdır ki, həm məlumatlarına uyğun gəlsin, həm də səhv datalardan qorunsun. Bu, yükləmə zamanı səhvlərin sayını azaldacaq.

Məlumatların yüklənmədən əvvəl yoxlanması

CSV fayllarında tez-tez sürprizlər olur. Məlumatları yükləməzdən əvvəl onların cədvəl strukturuna uyğun olduğuna əmin ol.

Məlumatları necə yoxlamaq olar?

  1. Sütunların uyğunluğu
    CSV-dəki sütunların sayı cədvəldəki sütunların sayı ilə üst-üstə düşməlidir. Məsələn, cədvəldə 5 sütun varsa, CSV faylında isə 6 sütun varsa, yükləmə səhvlə bitəcək.

  2. Data type-lar
    Hər sütundakı məlumatların gözlənilən type-lara uyğun olduğuna bax. Məsələn, age sütununda yalnız tam ədədlər olmalıdır.

Validasiya üçün alətlər

Excel və ya Google Sheets. Faylı cədvəl redaktorunda aç və sənəddə boş sətir və ya səhv məlumat olan hüceyrə olmadığından əmin ol.

Python. Data type-ları yoxlamaq üçün pandas kitabxanasından istifadə et:

import pandas as pd

# CSV-ni oxuyuruq
df = pd.read_csv('students.csv')

# Məlumatları yoxlayırıq
print(df.dtypes)  # Hər sütunun data type-larını göstərir
print(df.isnull().sum())  # Boş dəyərlərin yoxlanması

Məlumatların yüklənmədən əvvəl təmizlənməsi

Əksər hallarda xarici mənbələrdən gələn məlumatlar təmizlənməyə ehtiyac duyur. Əks halda, yükləmə zamanı səhvlərlə qarşılaşa bilərsən.

CSV fayllarında tipik problemlər

Boş sətirlər və ya sütunlar
Əgər məcburi sütunda (NOT NULL) dəyər yoxdursa, bu, səhvə səbəb olacaq.

Səhv məlumat nümunəsi:

id,name,age,email,major
1,Alex,20,alexey@example.com,Computer Science
2,Maria,,maria@example.com,Mathematics

Həll: Boş dəyərləri icazə verilənlərlə əvəz et. Məsələn, boş age sütununu NULL ilə əvəz et.

Artıq boşluqlar
Sətirin əvvəlində və ya sonunda olan boşluqlar problem yarada bilər. Məsələn, "Alex""Alex" fərqli dəyərlər kimi qəbul olunacaq.

Python-da həll: artıq boşluqları sil.

df = df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)

Səhv simvollar və ya kodlaşdırma
Əgər faylda bazaya uyğun olmayan xüsusi simvollar varsa, yükləmə uğursuz olacaq.

Nümunə: Kodlaşdırmanı dəyişmək üçün iconv tətbiqindən istifadə et:

iconv -f WINDOWS-1251 -t UTF-8 students.csv > students_utf8.csv

Məlumatların təmizlənməsi: Python nümunəsi

import pandas as pd

# Faylı oxuyuruq
df = pd.read_csv('students.csv')

# Məlumatları təmizləyirik
df['name'] = df['name'].str.strip()  # Boşluqları silirik
df['email'] = df['email'].str.lower()  # Email-i kiçik hərflərə çeviririk
df['age'] = df['age'].fillna(0)  # Yaş üçün boş dəyərləri doldururuq
df['age'] = df['age'].astype(int)  # Yaşı tam ədədə çeviririk

# Dəyişiklikləri yeni fayla yazırıq
df.to_csv('cleaned_students.csv', index=False)

Məlumatları yükləməzdən əvvəl həmişə yoxla. Unutma: yaxşı proqramçı vaxtına qənaət edir, problemləri əvvəlcədən tutur!

Cədvəllərin və məlumatların hazırlanması üçün faydalı yoxlama siyahısı

CSV ilə işləməyə başlamazdan əvvəl yoxla:

  • Cədvəl strukturu məlumatlara uyğundur (sütunlar, data type-lar, məhdudiyyətlər).
  • CSV faylında boş sətir, artıq boşluq və ya səhv simvol yoxdur.
  • Faylın kodlaşdırması PostgreSQL ilə uyğundur (ən yaxşısı UTF-8 istifadə et).
  • Məlumatların analizi və təmizlənməsi üçün alətlərdən istifadə edirsən (məsələn, Python, Excel).

İndi CSV-dən məlumat yükləməyə hazırsan! Amma bunu etməzdən əvvəl, cədvəlin düzgün qurulduğuna və məlumatların təmiz olduğuna əmin ol. Növbəti dərsdə PostgreSQL-ə məlumat yükləmə prosesini davam etdirəcəyik, o cümlədən səhvlərin işlənməsi və konfliktlərlə işləmə mövzularını da izah edəcəyik.

2
Tapşırıq
SQL SELF, səviyyə, dərs
Bağlanıb
Məlumatların yüklənməsi üçün cədvəlin yaradılması
Məlumatların yüklənməsi üçün cədvəlin yaradılması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION