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

Đăng ngày:

 

Sửa ngày:

55 Lượt xem

import tệp CSV trong PostgreSQL

PostgreSQL

Memo nhanh chóng về việc import dữ liệu CSV trong PostgreSQL.

Chuẩn bị (cho đến khi tạo bảng)

Đầu tiên, tạo Cơ sở dữ liệu (DB).

Chọn một tên bất kỳ cho DB là customer. Sau khi tạo xong, vào trong DB.

sf213471118:~ sf213471118$ createdb customer
sf213471118:~ sf213471118$ psql customer
psql (11.4)
Type "help" for help.
customer=#

Tiếp theo, tạo bảng customer như sau:

[Bảng]

id name gender age
10001 田中太郎 m 31
10002 中村花子 w 44
10003 佐藤一郎 m 20
10004 内田彩 w 18
10005 高橋次郎 m 56
10006 中里悟 m 34

[Chi tiết]

Cột Chi tiết
id Số gồm 5 chữ số
name Chuỗi không có độ dài cố định
gender Nam —> m
Nữ —> w
age Số không có độ dài cố định

Vì chúng ta đã tạo DB với mã hóa UTF-8 lần này, do đó khi sử dụng tiếng Nhật, chúng ta cần cân nhắc đến việc mỗi ký tự sẽ chiếm 3 byte.

customer=# \l
                                Danh sách các cơ s d liu
   Tên    |   Ch s hu   | Mã hóa  | Sp xếp t đin | Kiu t đin | Quyn truy cp
-----------+----------------+---------+-----------------+--------------+-----------------
customer   | sf213471118    | UTF8    | C               | C            |

Bây giờ chúng ta hãy tạo bảng ngay lập tức.

customer=# CREATE TABLE customer
(id char(15) NOT NULL,
name varchar NOT NULL,
gender char(3) NOT NULL,
age INTEGER ,
PRIMARY KEY (id));
CREATE TABLE

Nhập tất cả từ tệp CSV vào bảng

Khi đọc tệp CSV, ta sử dụng lệnh \copy trong psql.

Phần cuối cùng của lệnh with csv đằng sau đó là lệnh sao chép tệp CSV.

# \copy <Tên bảng> from <Tên tệp/tiền tố> with csv

Lưu ý rằng nếu không có chỉ định with csv, sẽ chỉ là một tệp văn bản thông thường được nhập vào mà thôi.

Trong ví dụ này, chúng ta đã tạo trước tệp customer.csv, vì vậy giờ là lúc import.

customer.csv

customer=# \copy customer from 'Documents/customer.csv' with csv
COPY 6

Kiểm tra để đảm bảo rằng dữ liệu đã được lưu trữ.

customer=# SELECT * FROM customer;
       id        |   name   | gender | age 
-----------------+----------+--------+-----
10001           | 田中太郎 | m      |  31
 10002           | 中村花子 | w      |  44
 10003           | 佐藤一郎 | m      |  20
 10004           | 内田彩   | w      |  18
 10005           | 高橋次郎 | m      |  56
 10006           | 中里悟   | m      |  34
(6 rows)

Trong trường hợp này, file CSV được import không có phần đầu mục (header), nhưng nếu có, lựa chọn của lệnh copy sẽ khác một chút.

Ví dụ, để đọc một tệp CSV có đầu mục như sau:

CSV with header

# \copy <Tên bảng> from <Tên tệp/tiền tố> with csv header

Thêm option header sẽ cho phép import dữ liệu có đầu mục.

import chỉ các cột cụ thể từ tệp CSV vào bảng

Nếu bạn chỉ muốn import một số cột cụ thể, chỉ cần chỉ định chúng sau tên bảng.

# \copy <Tên bảng>(cột1,cột2, ... ) from <Tên tệp/tiền tố> with csv

Dựa trên ví dụ trước đó, để lấy chỉ id, name, bạn có thể làm như sau:

customer=# \copy customer(id,name) from 'Documents/customer.csv' with 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