Có một công cụ rất tốt để nhập các bảng vào Postgres từ tệp csv, đó là một công cụ dòng lệnh có tên là pgfutter (với mã nhị phân cho windows, linux, v.v.). Một trong những lợi thế lớn của nó là nó cũng nhận ra các tên thuộc tính / cột.
Việc sử dụng công cụ này rất đơn giản. Ví dụ:nếu bạn muốn nhập myCSVfile.csv
:
pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv
Thao tác này sẽ tạo một bảng (được gọi là myCSVfile
) với các tên cột được lấy từ tiêu đề của tệp csv. Ngoài ra, các loại dữ liệu sẽ được xác định từ dữ liệu hiện có.
Một số lưu ý:Lệnh pgfutter
thay đổi tùy thuộc vào hệ nhị phân bạn sử dụng, ví dụ:nó có thể là pgfutter_windows_amd64.exe
(đổi tên nó nếu bạn định sử dụng lệnh này thường xuyên). Lệnh trên phải được thực thi trong cửa sổ dòng lệnh (ví dụ:trong Windows run cmd
và đảm bảo pgfutter
có thể truy cập được). Nếu bạn muốn có một tên bảng khác, hãy thêm --table "myTable"
; để chọn một lược đồ cơ sở dữ liệu cụ thể, chúng tôi --schema "mySchema"
. Trong trường hợp bạn đang truy cập cơ sở dữ liệu bên ngoài, hãy sử dụng --host "myHostDomain"
.
Một ví dụ phức tạp hơn về pgfutter
để nhập myFile
vào myTable
đây có phải là cái này không:
pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv
Nhiều khả năng bạn sẽ thay đổi một vài kiểu dữ liệu (từ văn bản sang số) sau khi nhập:
alter table myTable
alter column myColumn type numeric
using (trim(myColumn)::numeric)