Фото: 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 POSTGRESPASSWORD="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
, щоб переглянути доступні таблиці. Оскільки таблиць ще не існує, це покаже порожній результат.
Скріншот pgcli, коли я запустив його в GitHub Codespace
Завантаження даних до PostgreSQL
Тепер давайте завантажимо дані до нашої бази даних PostgreSQL. Ми будемо використовувати дані з NYC Taxi Dataset, надані в курсі.
Завантаження даних
Ви можете завантажити набір даних за допомогою бібліотеки Python requests
або інструментів, таких як wget
.
Перекладено з: Data Ingestion to PostgreSQL (Data Engineering Zoomcamp 1–2)