PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Trong PostgreSQL, làm thế nào để chèn dữ liệu bằng lệnh COPY?

COPY tbl FROM STDIN;

không được pgAdmin hỗ trợ.
Bạn gặp lỗi cú pháp đơn giản vì Postgres lấy dữ liệu dưới dạng mã SQL.

Bốn các giải pháp khả thi:

1. Sử dụng INSERT nhiều hàng thay vào đó:

INSERT INTO beer(name, tags, alcohol, brewery, id, brewery_id, image)
VALUES 
  ('Bons Voeux', 'blonde', 9.5, 'Brasserie Dupont', 250, 130, 'generic.png')
, ('Boerke Blond', 'blonde', 6.8, 'Brouwerij Angerik', 233, 287 'generic.png')
;

Lưu ý cú pháp (SQL) khác nhau cho các giá trị dưới dạng chuỗi ký tự hoặc ký tự số.

Bạn có thể tạo dữ liệu bằng pg_dump sử dụng --inserts . Có liên quan:

  • Xuất các hàng cụ thể từ bảng PostgreSQL dưới dạng INSERT SQL script

2. Hoặc gọi tập lệnh của bạn trên dòng lệnh bằng psql . Là người dùng hệ thống postgres :

psql -f beer.sql -U my_login_role -d db_name 

Cơ sở dữ liệu (-d ) và vai trò đăng nhập (-U cho "Người dùng") có thể được bỏ qua nếu mặc định là ok. Ví dụ về cú pháp:

  • Tạo cơ sở dữ liệu Postgres bằng cách sử dụng tệp loạt với [mẫu], [mã hóa], [chủ sở hữu] và tệp .sql

Đảm bảo có điểm đánh dấu cuối dữ liệu (\. ) cho text mặc định định dạng. (Bạn có cái đó.) Hướng dẫn sử dụng:

Phần cuối của dữ liệu có thể được biểu thị bằng một dòng duy nhất chứa dấu gạch chéo ngược (\. ). Một điểm đánh dấu cuối dữ liệu là không cần thiết khi đọc từ một tệp, vì phần cuối của tệp hoạt động hoàn toàn tốt; chỉ cần thiết khi sao chép dữ liệu vào hoặc từ các ứng dụng khách sử dụng giao thức ứng dụng khách trước 3.0.

3. Hoặc di chuyển dữ liệu của bạn sang một tệp riêng biệt trên máy chủ , nói 'beer_data.csv' và sử dụng COPY .. FROM 'filename' trong tập lệnh của bạn:

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';

Cách nào cũng hiệu quả. Tuy nhiên, bạn cần có đặc quyền của người dùng siêu cấp. Hướng dẫn sử dụng:

[...] COPY chỉ cho phép đặt tên tệp hoặc lệnh đối với người dùng cấp trên cơ sở dữ liệu hoặc người dùng được cấp một trong các vai trò mặc định pg_read_server_files , pg_write_server_files hoặc pg_execute_server_program , vì nó cho phép đọc hoặc ghi bất kỳ tệp nào hoặc chạy chương trình mà máy chủ có đặc quyền truy cập.

(pg_read_server_files , pg_write_server_filespg_execute_server_program mới trong Postgres 11.)

4. Hoặc đọc một tệp cục bộ cho máy khách với siêu lệnh psql \copy . Xem:

  • Làm cách nào để cập nhật các hàng đã chọn với các giá trị từ tệp CSV trong Postgres?
  • Cách sử dụng \ copy trong postgresql với pgadmin4


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các công cụ sao lưu hàng đầu cho PostgreSQL

  2. Tập lệnh shell để thực thi các lệnh pgsql trong tệp

  3. Không có kết quả trả về do lỗi Truy vấn trong PostgreSQL

  4. Biểu thức chính quy trong mệnh đề LIKE của PostgreSQL

  5. Tổng hợp kết nối PostgreSQL:Phần 3 - Pgpool-II