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

POSTGRES SAO CHÉP TỪ CHƯƠNG TRÌNH vào một bảng động với các cột không xác định

Vì bạn không biết trước số lượng / loại hàng nên tôi khuyên bạn nên làm như thế này:

  • (1) nhập CSV của bạn vào một bảng (tạm thời?) với một cột văn bản duy nhất mà không cần tách. Sử dụng backspace ký tự như một dấu phân tách để toàn bộ dòng đã nhập sẽ vẫn nguyên vẹn;
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
  • (2) chạy truy vấn chia CSV thành một mảng văn bản - function parse_csv và sau đó sử dụng tập hợp các mảng văn bản có liên quan (có thể ánh xạ / chèn vào bảng mục tiêu 'thực')
WITH rawdata AS
(
 SELECT parse_csv(rawtext) arr FROM rawtext_t
) 
INSERT INTO real_t (...fields...) 
SELECT arr[1], arr[3], ...
FROM rawdata;

TRUNCATE TABLE rawtext_t;

Bạn có thể thêm WHERE mệnh đề trong SELECT thứ hai để lọc các hàng đến nếu cần.

Tùy chọn khác - một điều rất hay theo hiểu biết của tôi - là sử dụng file_textarray_fdw tuyệt vời ít nhiều đều có cùng tác dụng.

Hy vọng rằng điều này cung cấp cho bạn ý tưởng và hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để viết một quy tắc xóa trên một dạng xem?

  2. Tôi muốn chèn bằng mikro-orm, nhưng nó không tìm thấy bảng của tôi:c (TableNotFoundException)

  3. hiệu suất hàng loạt jdbc

  4. Kết hợp các câu lệnh INSERT trong một CTE sửa đổi dữ liệu với một biểu thức CASE

  5. Cập nhật postgres từ tham gia bên trái