PostgreSQL

Cách export dữ liệu của table PostgreSQL ra CSV file

Cách export dữ liệu của table PostgreSQL ra CSV file
Được viết bởi Minh Hoàng

Series chia sẻ về PostgreSQL – Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới.

Bài viết này sẽ mô tả các kỹ thuật khác nhau để export dữ liệu của bảng PostgreSQL ra file CSV.

Ở bài viết trước, chúng ta đã biết cách import dữ liệu của file CSV vào bảng. Chúng ta sẽ sử dụng bảng persons đã tạo trong bài viết đó để export dữ liệu ra file CSV.

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 1

Và thử check dữ liệu của bảng persons

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 2

1. Sử dụng COPY statement

1. Sử dụng COPY statement

Cách dễ nhất để export dữ liệu của bảng ra file CSV là sử dụng câu lệnh COPY.

Ví dụ: chúng ta sẽ export dữ liệu của bảng persons ra file CSV có tên persons_db.csv trong thư mục F:\minhhn.com\MinhHoangBlog thì có thể sử dụng câu lệnh sau:

COPY persons
TO 'F:\minhhn.com\MinhHoangBlog\persons_db.csv'
DELIMITER ','
CSV HEADER;

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 3

Khi thực thi xong lệnh COPY, PostgreSQL trả lại thông báo sau:

COPY 2

Điều đó có nghĩa đã export thành công 2 hàng dữ liệu của bảng persons ra file CSV.

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 4

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 5

Trong một số trường hợp, bạn chỉ muốn export dữ liệu của một số cột ra file CSV thì hãy chỉ định tên cột cùng với tên bảng sau từ khóa COPY.

Ví dụ: câu lệnh sau xuất dữ liệu từ các cột first_name, last_nameemail của bảng persons

COPY persons(first_name,last_name,email)
TO 'F:\minhhn.com\MinhHoangBlog\persons_db1.csv'
DELIMITER ','
CSV HEADER;

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 6

Nếu bạn không muốn export dòng tiêu đề chứa tên cột của bảng, chỉ cần xóa chỉ định HEADER trong câu lệnh COPY.

Ví dụ: câu lệnh sau không export phần header và chỉ xuất dữ liệu từ cột email ra file CSV.

COPY persons(email)
TO 'F:\minhhn.com\MinhHoangBlog\persons_db2.csv'
DELIMITER ','
CSV;

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 7

2. Sử dụng copy command

2. Sử dụng \copy command

Trong trường hợp bạn có quyền truy cập vào máy chủ cơ sở dữ liệu PostgreSQL từ xa (remote PostgreSQL database server), nhưng bạn không có đủ đặc quyền để write file trên đó, bạn có thể sử dụng lệnh \copy được tích hợp trong PostgreSQL.

Lệnh \copy về cơ bản chạy câu lệnh COPY ở trên. Tuy nhiên, thay vì server ghi file CSV, psql ghi file CSV, chuyển dữ liệu từ server sang hệ thống file local của bạn. Để sử dụng lệnh \copy, bạn chỉ cần có đủ đặc quyền cho máy local của mình. Nó không yêu cầu đặc quyền superuser PostgreSQL.

Ví dụ: nếu bạn muốn export tất cả dữ liệu của bảng persons vào tệp persons_client.csv, bạn có thể thực thi lệnh \copy từ máy psql client như sau:

\copy (SELECT * FROM persons) to 'F:\minhhn.com\MinhHoangBlog\persons_client.csv' WITH csv
3. Sử dụng giao diện pgAdmin

3. Sử dụng giao diện pgAdmin

Sau khi vào trang quản trị cơ sở dữ liệu pgAdmin > right-click bảng persons > chọn Import/Export…

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 8

Hộp thoại Import/Export data sẽ xuất hiện, bạn thiết lập các thông số như hình:

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 9

Cuối cùng, click tab Columns > tùy chọn sẽ export toàn bộ cột, hoặc xóa cột không cần export > click OK

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 10

Xong, chờ xíu là quá trình export hoàn tất, và chúng ta có kết quả:

Cách export dữ liệu của table PostgreSQL ra CSV file - Hình 11

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »