Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

  78 Lượt xem

Cách Xuất (Export) CSV trong PostgreSQL

PostgreSQL

Có hai cách để thực hiện việc xuất dữ liệu (Export) trong PostgreSQL.

[ Môi trường ]
psql (PostgreSQL) 9.5.3

Lệnh COPY

Sử dụng lệnh psql và nhập vào postgres trước khi thực hiện lệnh.

Ngăn cách bằng dấu phẩy (CSV)

COPY (tên bng) TO '(đường dẫn tệp)' WITH CSV DELIMITER ',';

Ví dụ cụ thể:

COPY users TO '/tmp/users.csv' WITH CSV DELIMITER ',';

Như vậy sẽ xuất ra dữ liệu ngăn cách bằng dấu phẩy, hay còn gọi là CSV.

Chuyển ký tự NULL thành chuỗi rỗng

COPY (tên bng) TO '(đường dẫn tệp)' WITH CSV NULL AS '';

Ví dụ cụ thể:

COPY users TO '/tmp/users.csv' WITH CSV NULL AS '';

Nếu không có, ký tự NULL sẽ xuất hiện dưới dạng “\N”. Sử dụng NULL AS ‘’ để xuất ký tự NULL thành chuỗi rỗng.

Ngăn cách bằng tab (TSV)

COPY (tên bng) TO '(đường dẫn tệp)' WITH CSV DELIMITER E'\t';

Ví dụ cụ thể:

COPY users TO '/tmp/users.csv' WITH CSV DELIMITER E'\t';

Đặt DELIMITER là “E’\t’”. DELIMITER chỉ có 1 byte, nên khi sử dụng “\t”, chiều dài là 2 byte và gây ra lỗi. Do đó, việc thêm chữ cái E trước nó sẽ cho phép sử dụng DELIMITER 2 byte.

Muốn có tên cột

Thêm HEADER vào là được.

COPY (tên bng) TO '(đường dẫn tệp)' WITH CSV HEADER;

Ví dụ cụ thể:

COPY users TO '/tmp/users.csv' WITH CSV HEADER;

Muốn bao quanh tất cả các mục bằng dấu ngoặc kép

Sử dụng FORCE QUOTE!

COPY (tên bng) TO '(đường dẫn tệp)' WITH CSV FORCE QUOTE *;

Ví dụ cụ thể:

COPY users TO '/tmp/users.csv' WITH CSV FORCE QUOTE *;

Bạn muốn chỉnh sửa CSV trong Excel!!!

Tức là:

  • Ngăn cách bằng tab,
  • Bao quanh bằng dấu ngoặc kép (QUOTE),
  • Ký tự NULL trở thành chuỗi rỗng,
  • Hiển thị tên cột.

Sử dụng FORCE!

COPY (tên bng) TO '(đường dẫn tệp)' WITH CSV DELIMITER E'\t' FORCE QUOTE * NULL AS '' HEADER;

Ví dụ cụ thể:

COPY users TO '/tmp/users.csv' WITH CSV DELIMITER E'\t' FORCE QUOTE * NULL AS '' HEADER;

Cuối cùng chỉ cần chắc chắn rằng mã ký tự là SJIS là hoàn hảo!!! (Nếu đầu ra là UTF-8 hoặc tương tự, chỉ cần chuyển đổi bằng lệnh iconv để chuyển sang SJIS).

Lưu ý: Khi tệp đích đã tồn tại, nó sẽ bị ghi đè.

Lệnh psql

Đối với cách này, không cần nhập vào psql trước. Sử dụng trong trạng thái shell.

Ngăn cách bằng dấu phẩy (CSV) & Chuyển ký tự NULL thành chuỗi rỗng

psql tên cơ s d liu -c "Lệnh SQL" -A -F, > Tên tp CSV

Cách này cũng hoạt động.
-F là tùy chọn định dạng, mặc định là “phẩy (,)”.

Ngăn cách bằng tab (TSV)

psql tên cơ s d liu -c "Lệnh SQL" -A -F $'\t' > Tên tp CSV

Nếu là ngăn cách bằng tab (tsv), hãy chỉ định ngăn cách là tab.

Lưu ý: Khi tệp đích đã tồn tại, sẽ xuất hiện lỗi (Tệp đã tồn tại!). Các tùy chọn khác sẽ không được đề cập ở đây!

Phương pháp import

COPY (tên bng) FROM '(đường dẫn tệp)' DELIMITER E'\t' WITH NULL AS '';

Chỉ cần thay đổi TO thành FROM là bạn có thể chuyển thành import file CSV.

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic