PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah ada cara untuk memuat data teks ke database di PostgreSQL?

Pendekatan yang saya gunakan dengan file XML saya yang besar - 130GB atau lebih besar - adalah dengan mengunggah seluruh file ke tidak masuk log sementara tabel dan dari sana saya mengekstrak konten yang saya inginkan. Unlogged tables tidak crash-safe, tetapi jauh lebih cepat daripada yang dicatat, yang benar-benar sesuai dengan tujuan tabel sementara;-)

Perhatikan tabel berikut..

CREATE UNLOGGED TABLE tmp (raw TEXT);

.. Anda dapat mengimpor file 1GB ini menggunakan satu psql baris dari konsol Anda (unix)..

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

Setelah itu yang Anda butuhkan hanyalah menerapkan logika Anda ke kueri dan mengekstrak informasi yang Anda inginkan. Bergantung pada ukuran tabel Anda, Anda dapat membuat tabel kedua dari SELECT , misalnya:

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%'

Sesuaikan string_to_array fungsi dan WHERE klausa untuk logika Anda! Opsional Anda dapat mengganti beberapa LIKE operasi ke satu SIMILAR TO .

.. dan data Anda akan siap untuk dimainkan dengan:

SELECT * FROM t;

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

Setelah data Anda diekstraksi, Anda dapat DROP TABLE tmp; untuk mengosongkan beberapa ruang disk;)

Bacaan lebih lanjut:COPY , PostgreSQL array functions dan pattern 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. PL/pgSQL memeriksa apakah ada baris

  2. Penyelaman Cloud Vendor:PostgreSQL di Microsoft Azure

  3. Gunakan koneksi SSL PostgreSQL dengan sertifikat yang ditandatangani sendiri

  4. Untuk apa '$$' digunakan di PL/pgSQL

  5. File Soket /var/pgsql_socket/.s.PGSQL.5432 Hilang Di Mountain Lion (OS X Server)