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

Có cách nào để tải dữ liệu văn bản vào cơ sở dữ liệu trong PostgreSQL không?

Một cách tiếp cận mà tôi sử dụng với các tệp XML lớn của mình - 130GB hoặc lớn hơn - là tải toàn bộ tệp lên một tệp đã mở khóa tạm thời bảng và từ đó tôi trích xuất nội dung tôi muốn. Unlogged tables không an toàn với sự cố, nhưng nhanh hơn nhiều so với các bảng đã ghi, điều này hoàn toàn phù hợp với mục đích của một bảng tạm thời;-)

Xem xét bảng sau ..

CREATE UNLOGGED TABLE tmp (raw TEXT);

.. bạn có thể nhập tệp 1GB này bằng một psql từ bảng điều khiển của bạn (unix) ..

$ cat 1gb_file.txt | psql -d db -c "COPY tmp FROM STDIN" 

Sau đó, tất cả những gì bạn cần là áp dụng logic của mình để truy vấn và trích xuất thông tin bạn muốn. Tùy thuộc vào kích thước bảng của bạn, bạn có thể tạo bảng thứ hai từ SELECT , ví dụ:

CREATE TABLE t AS
SELECT 
  trim((string_to_array(raw,','))[1]) AS operation,
  trim((string_to_array(raw,','))[2])::timestamp AS tmst,
  trim((string_to_array(raw,','))[3]) AS txt
FROM tmp
WHERE raw LIKE '%DEBUG%' AND
      raw LIKE '%ghtorrent-40%' AND 
      raw LIKE '%Repo EFForg/https-everywhere exists%'

Điều chỉnh string_to_arrayWHERE mệnh đề logic của bạn! Theo tùy chọn, bạn có thể thay thế nhiều LIKE này các thao tác với một SIMILAR TO .

.. và dữ liệu của bạn sẽ sẵn sàng để phát với:

SELECT * FROM t;

 operation |        tmst         |                               txt                                
-----------+---------------------+------------------------------------------------------------------
 DEBUG    | 2017-03-23 10:02:27 | ghtorrent-40 -- ghtorrent.rb:Repo EFForg/https-everywhere exists
(1 Zeile)

Sau khi dữ liệu của bạn được giải nén, bạn có thể DROP TABLE tmp; để giải phóng một số không gian đĩa;)

Đọc thêm:COPY , Các hàm mảng array functionspattern matching




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quay lại phiên bản readline 6.x trong Homebrew để sửa Postgresql?

  2. Nhật ký lưu trữ được nén PostgreSQL trong Windows

  3. PostgreSQL và C # Datatypes

  4. Điều chỉnh PostgreSQL:Những điều quan trọng để thúc đẩy hiệu suất

  5. Chọn hàng ngẫu nhiên từ bảng PostgreSQL với xác suất hàng có trọng số