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ıidsü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?
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.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,agesü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" və "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.
GO TO FULL VERSION