- vừa được xem lúc

Cách import table có 1.000.000 records vào PostgreSQL trong Docker container

0 0 15

Người đăng: Quan Troy

Theo Viblo Asia

Trong công việc, đôi khi chúng ta cần import một lượng lớn dữ liệu fake hoặc dữ liệu từ môi trường staging vào local để hỗ trợ quá trình debug, testing hay tối ưu hóa các truy vấn... Nếu chỉ sử dụng các công cụ quản lý PostgreSQL như pgAdmin, DBeaver, Navicat... thì gần như điều này là không khả thi. Bài viết này sẽ hướng dẫn bạn cách import một table với hàng triệu bản ghi hoặc thậm chí cả một cơ sở dữ liệu lên đến vài chục GB một cách chi tiết step-by-step.

Giới thiệu về PostgreSQL

PostgreSQL, thường được gọi là Postgres, là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) mạnh mẽ và mã nguồn mở. Với bộ tính năng mạnh mẽ và sự chú trọng vào khả năng mở rộng và tuân thủ tiêu chuẩn, PostgreSQL đã xứng đáng là một trong những hệ thống cơ sở dữ liệu tiên tiến và phổ biến nhất trong thế giới phát triển phần mềm hiện đại.

1. Import file table CSV vào docker Postgresql database

Đầu tiên bạn cần 1 file CSV, có thể là file CSV fake data hoặc file CSV bạn export được từ một DB khác.

Bước kế tiếp, bạn sẽ cần biết tên của container PostgreSQL. Đơn giản nhất, bạn có thể chạy lệnh docker ps để kiểm tra danh sách các container đang chạy.

Như bạn có thể thấy, trong danh sách bên trên, tên container Postgres của mình là project-postgres-1 . Sau khi bạn xác định được tên container, tiếp theo chúng ra copy file CSV từ máy tính của bạn vào bên trong container PostgreSQL bằng lệnh sau:

docker cp ./name_of_file.csv project-postgres-1:/name_of_file_in_docker.csv

Lưu ý rằng:

  • Đảm bảo bạn đang chạy lệnh từ thư mục chứa file CSV thực tế.
  • Thay project-postgres-1 bằng tên hoặc ID của container PostgreSQL của bạn.
  • Nếu có nhiều file, hãy đặt chúng trong một thư mục và copy thư mục đó để tiết kiệm thời gian.

Tiếp theo, khởi chạy container PostgreSQL và chọn cơ sở dữ liệu cần nhập CSV bằng lệnh dưới đây:

  • -U: user của cơ sở dữ liệu
  • -d: chọn database muốn import CSV
docker exec -it project-postgres-1 psql -U db_user -d your_database

Bước cuối cùng để đảm bảo quá trình import CSV thành công, thực hiện lệnh sau bên trong container PostgreSQL:

  • table: table muốn import
  • name_of_file_in_docker.csv: file đã copy vào container ở bước trên.

Chú ý: lệnh này phải được chạy trong Postgres container

//import CSV
\copy table from '/name_of_file_in_docker.csv' delimiter ',' CSV HEADER;

Nếu bạn thấy thông báo giống như COPY 10" (với 10 là số lượng bản ghi trong file) xuất hiện trên terminal, bạn có thể chắc chắn rằng quá trình import đã thành công.

2. Import/ Export database

Nếu bạn muốn import export databse hay chỉ đơn giản muốn backup database thì có thể tham khảo lệnh bên dưới.

Export:

docker exec -i project-postgres-1 psql -U db-user your_database > path/to/backup.sql

Import: Tương tự để lệnh export nhưng đổi > thành <

docker exec -i project-postgres-1 psql -U db-user your_database < path/to/backup.sql

3. Một vài lệnh hay dùng trong Postgres

  • \l: Hiển thị danh sách cơ sở dữ liệu
  • \c + tablename: Chọn cơ sở dữ liệu
  • \dt: Hiển thị danh sách bảng trong cơ sở dữ liệu
  • \d + tablename: Hiển thị chi tiết cấu trúc bảng, cột nào là index, unique, nullable

Với các lệnh này, bạn có thể thực hiện nhanh chóng các thao tác quan trọng trong PostgreSQL mà không cần vào trình quản lý cơ sở dữ liệu.

4. Kết luận

Chúng ta đã cùng nhau khám phá cách import từ file CSV vào container PostgreSQL, bao gồm cả việc import toàn bộ cơ sở dữ liệu. Bài viết cũng cung cấp một số lệnh quan trọng trong PostgreSQL giúp quản lý dữ liệu một cách hiệu quả.

Với những hướng dẫn chi tiết và lệnh hữu ích, hi vọng có thể giúp bạn quản lý cơ sở dữ liệu PostgreSQL của mình trong môi trường Docker một cách dễ dàng và hiệu quả.

Cảm ơn bạn đã đọc bài viết.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 132

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 57

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 110

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 969

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 41

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 73