Інгестія даних до PostgreSQL (Data Engineering Zoomcamp 1-2)

pic

Фото: Hunter Harritt на Unsplash

Цей пост є частиною серії, в якій я документую свої здобутки з курсу "Data Engineering Zoomcamp", створеного DataTalksClub. Матеріали курсу можна знайти на GitHub тут: DataTalksClub/data-engineering-zoomcamp: Безкоштовний курс з Data Engineering!

У цьому пості я продовжу свій попередній пост про вступ до Docker, зосередившись на завантаженні даних до бази даних Postgres з використанням Python і Docker.

Налаштування PostgreSQL в Docker

Щоб запустити екземпляр PostgreSQL в Docker, потрібно налаштувати змінні середовища, шляхи до томів і відповідність портів. Ось приклад команди:

docker run -it \  
 -e POSTGRES_USER="root" \  
 -e POSTGRES_PASSWORD="root" \  
 -e POSTGRES_DB="ny_taxi" \  
 -v $(pwd)/ny_taxi_postgres_data:/var/lib/postgresql/data \  
 -p 5432:5432 \  
 postgres:13
  • -e (Змінні середовища): Встановлює ім'я користувача, пароль і ім'я бази даних для PostgreSQL.
  • -v (Том): Зв'язує папку контейнера var/lib/postgresql/data з локальним каталогом (ny_taxi_postgres_data). Це забезпечує постійну зберігання даних поза життєвим циклом контейнера. За замовчуванням контейнери є безстанними, тому це з'єднання зберігає ваші дані бази даних між запусками контейнерів.
  • -p (Відповідність портів): Зв'язує порт 5432 на вашому локальному комп'ютері з портом 5432 в контейнері. Це дозволяє вам підключатися до PostgreSQL через localhost:5432.

Примітка:
Для Docker на Windows замініть $(pwd) на відповідний шлях до файлу для Windows.
Альтернативно, можна використовувати іменований том замість прив'язки до каталогу:

docker volume create --name dtc_postgres_volume_local -d local  

docker run -it \  
 -e POSTGRES_USER="root" \  
 -e POSTGRES_PASSWORD="root" \  
 -e POSTGRES_DB="ny_taxi" \  
 -v dtc_postgres_volume_local:/var/lib/postgresql/data \  
 -p 5432:5432 \  
 postgres:13

Тут опція -d (драйвер) вказує на драйвер зберігання (local) для тому.

Коли ми побачимо повідомлення:
LOG: database system is ready to accept connections, це означає, що наш контейнер PostgreSQL працює!

Доступ до бази даних за допомогою pgcli

Для взаємодії з базою даних PostgreSQL ми будемо використовувати pgcli, клієнт PostgreSQL на Python. Встановіть його, а потім підключіться за допомогою такої команди:

pgcli \  
 -h localhost -p 5432 \  
 -udt`, щоб переглянути доступні таблиці. Оскільки таблиць ще не існує, це покаже порожній результат.

![pic](https://drive.javascript.org.ua/47aece2ee21_A4ziYhGSMwftquEPusn51A_png)

_Скріншот pgcli, коли я запустив його в GitHub Codespace_

## Завантаження даних до PostgreSQL

Тепер давайте завантажимо дані до нашої бази даних PostgreSQL. Ми будемо використовувати дані з [NYC Taxi Dataset](https://github.com/DataTalksClub/nyc-tlc-data), надані в курсі.

### Завантаження даних

Ви можете завантажити набір даних за допомогою бібліотеки Python `requests` або інструментів, таких як `wget`.
![pic](https://drive.javascript.org.ua/3370a44ebf0__yWYJjBjgHMCkt3j)

_Фото: Hunter Harritt на Unsplash_

Цей пост є частиною серії, в якій я документую свої навчання з курсу "Data Engineering Zoomcamp", створеного DataTalksClub. Матеріали курсу можна знайти на GitHub тут: [DataTalksClub/data-engineering-zoomcamp: Безкоштовний курс з Data Engineering!](https://github.com/DataTalksClub/data-engineering-zoomcamp/tree/main)

У цьому пості я продовжую свій попередній пост про [вступ до Docker](/@terryz_/intro-to-docker-data-engineering-zoomcamp-1-1-92d79ae6c510), зосереджуючись на завантаженні даних до бази даних Postgres за допомогою Python і Docker.

## Налаштування PostgreSQL в Docker

Щоб запустити екземпляр PostgreSQL в Docker, потрібно налаштувати змінні середовища, шляхи до томів і відповідність портів. Ось приклад команди:

docker run -it \
-e POSTGRESUSER="root" \
-e POSTGRES
PASSWORD="root" \
-e POSTGRESDB="nytaxi" \
-v $(pwd)/nytaxipostgres_data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:13
```

  • -e (Змінні середовища): Встановлює ім'я користувача, пароль і ім'я бази даних для PostgreSQL.
  • -v (Том): Зв'язує папку контейнера var/lib/postgresql/data з локальним каталогом (ny_taxi_postgres_data). Це забезпечує постійну зберігання даних поза життєвим циклом контейнера. За замовчуванням контейнери є безстанними, тому це з'єднання зберігає ваші дані бази даних між запусками контейнерів.
  • -p (Відповідність портів): Зв'язує порт 5432 на вашому локальному комп'ютері з портом 5432 в контейнері. Це дозволяє вам підключатися до PostgreSQL через localhost:5432.

Примітка:
Для Docker на Windows замініть $(pwd) на відповідний шлях до файлу для Windows.
Альтернативно, можна використовувати іменований том замість прив'язки до каталогу:

docker volume create --name dtc_postgres_volume_local -d local  

docker run -it \  
 -e POSTGRES_USER="root" \  
 -e POSTGRES_PASSWORD="root" \  
 -e POSTGRES_DB="ny_taxi" \  
 -v dtc_postgres_volume_local:/var/lib  
 -p 5432:5432 \  
 postgres:13

Тут опція -d (драйвер) вказує на драйвер зберігання (local) для тому.

Коли ми побачимо повідомлення:
LOG: database system is ready to accept connections, це означає, що наш контейнер PostgreSQL працює!

Доступ до бази даних за допомогою pgcli

Для взаємодії з базою даних PostgreSQL ми будемо використовувати pgcli, клієнт PostgreSQL на Python. Встановіть його, а потім підключіться за допомогою такої команди:

pgcli \  
 -h localhost -p 5432 \  
 -u root -d ny_taxi

Виконайте \dt, щоб переглянути доступні таблиці. Оскільки таблиць ще не існує, це покаже порожній результат.

pic

Скріншот pgcli, коли я запустив його в GitHub Codespace

Завантаження даних до PostgreSQL

Тепер давайте завантажимо дані до нашої бази даних PostgreSQL. Ми будемо використовувати дані з NYC Taxi Dataset, надані в курсі.

Завантаження даних

Ви можете завантажити набір даних за допомогою бібліотеки Python requests або інструментів, таких як wget.

Перекладено з: Data Ingestion to PostgreSQL (Data Engineering Zoomcamp 1–2)

Leave a Reply

Your email address will not be published. Required fields are marked *